ML (머신러닝) 이란?
일종의 소프트웨어 (입력기반 데이터를 보여주는 것 - explicit programming)
딥러닝이란?
머신러닝을 활용해, 인공지능에게 꾸준히 학습 시키며 정확도 높은 출력물을 얻는 것
기본지식
수학/컴퓨터 과학 지식이 필요하지만 많은 것은 아님
y = Wx+b (y = ax+b) 와 같은 방정식을 주로 이용
기본형태
x (입력) → [ black box ] → y (출력)
블랙박스를 잘 만들어서, 좋은 출력값 y가 나올 수 있도록 하는 것이 딥러닝의 목표!
사용하는 언어는?
텐서플로우 and 파이썬
머신러닝 2가지
Supervised learning
어떤 하나의 정해진 데이터(training set - 이미 label을 가지고 있음)을 가지고 러닝하는 것
ex. 이미지를 주고, 개인지 고양이인지 맞추기!
Unsupervised learning
label을 가지고 있지 않은 데이터 (데이터를 통해 스스로 학습을 해야함)
ex. 구글 뉴스 그룹핑(유사 뉴스 모으기), 비슷한 단어끼리 모으기
Training data set이란?
머신러닝을 만들기 위해, 기존에 주어진 값들로 학습을 시키는 것
주어진 값들을 머신러닝에 주입시키고, 사용자가 원하는 값을 유추하기 위해 필요한 단계!
Training data의 x와 y value 값에 대한 가장 근접한 선형(Linear)를 찾는 것
목적 : cost 값을 최소화하는 W(weight)와 b(bias)를 찾자
주어진 데이터를 대표하는 하나의 직선을 찾아야 한다. 이때 이 직선을 회귀선이라고 부른다.단순 선형 회귀분석을 x와 y변수 간의 관계로 나타내면 y= ax+b와 같은 선형 관계식으로 표현이 가능하다.
이 회귀선을 찾기 위해서 사용할 Linear regression에 활용되는 cost 함수와, cost를 최소화하는데 사용하는 gradient descent 알고리즘은 아래와 같다.
H(x) : 가설
cost(W,b) : 비용
W : weight
b : bias
m : 데이터 개수
H(x^(i)) : 예측 값
y^(i) : 실제 값
(예측값 - 실제값)의 제곱을 하는 이유는?
>> 양수가 나올 수도 있고, 음수가 나올 수도 있다. 또한 제곱을 하면, 거리가 더 먼 결과일 수록 값은 더욱 커지게 되어 패널티를 더 줄 수 있는 장점이 있다.
minimization problem 사용
어떤 점에서나 시작이 가능
W를 조금씩 바꾸면서 나아감 → cost(W,b) 절감 시도
반복
어떤 점에서 시작하든, 최소점에 도달할 수 있는 알고리즘
'미분'을 사용한다.
만약 variable이 하나가 아닌 여러개라면?
이때는 Matrix를 이용한 Linear Regression을 활용해야 한다.
우선 가설(Hypothesis)을 살펴보자
x가 여러개의 값이 들어오면서 다음과 같이 Hypothesis를 정의할 수 있다.
cost function에서도 가설에 해당하는 부분을 다음과 같이 multi-variable 형식으로만 수정하면 된다.
우리는 matrix 방식을 사용해서 가설을 구하는 것이 가능하다.
따라서 x값이 여러가지라고 해도, linear regression을 적용하는데 문제가 없다.
두 개의 결과만을 확인할 필요가 있을 때 ( pass/fail )
binary classfication이라고도 부른다.
이전에 Linear regression에서는 1차 함수로 표현되는 독립 변수(x)가 변화하면서 종속 변수(y)가 어떻게 변화되는지 알아봤었다. 이때는 x와 y의 범위는 무한대로 제약이 없는 상황이다.
하지만 이 변화하는 값들을 딱 두 개의 결과로만 확인을 해야 한다면? 이때는 Logistic regression을 사용해야 한다.
기본 로지스틱 함수는 다음과 같다.
시그모이드 함수라고도 불리며, 도출되는 모양은 S자로 나타나게 된다.
로지스틱 회귀 함수 도출 과정을 간단히 정리하면 다음과 같다.
1. 무한의 값을 갖는 선형 회귀 식을 통해 두 개의 값(0또는 1)만을 갖는 결과를 가져와야 한다면?!
2. 두 개의 결과만을 도출하는 과정이 연속된다면, 확률 범위를 0에서부터 1까지로 제한하자
3. 0부터 1까지의 값이 제한된 확률 값의 범위를 0부터 무한대로 확장하기 위해 odds 비를 취한다.
4. 0부터 무한대까지 확장된 결과를 다시 무한대에서 무한대로 확장하기 위해 odds 비의 식에 자연로그를 취한다. (logit 변환 과정)
5. 이제 양쪽의 식이 모두 무한대에서 무한대 값을 갖게되므로 등식이 성립되고, 이 등식을 변형하면 우리가 원하는 Logistic 함수가 도출된다.
binary classification을 여러번 결합한 결과
이 값을 이용해 one-hot encoding을 거쳐 가장 확실한 값을 도출해내는 것
시그모이드를 한꺼번에 처리하기 위해서 Multinomial classfication을 활용한다.
행렬의 곱을 이용해서 variable이 3개라도 한꺼번에 구하는 것이 가능하다.
Logistic classfication 함수를 이용해 Y = WX를 계산하면 벡터값이 나오게 된다.
여러가지 값이 도출되고, 총 합이 1이 되는 함수를 만들어내는 것이 softmax다.
a = 0.7, b = 0.2, c = 0.1이 나오는 것을 볼 수 있다. (총합 1)
점수로 나온 결과를 전체 합계가 1이 되는 0과 1 사이 값으로 변경해주는 것이다. 즉 이는 확률을 의미한다고 볼 수 있고, a는 70%의 가능성으로 나올 수 있다는 뜻이다.
이제 이 값들을 0과 1로 바꾸어주는 과정을 진행해야 한다. 이를 one-hot encoding이라고 말한다.softmax로 구한 값 중에서 가장 큰 값을 1로, 나머지를 0으로 만드는 과정이다.
이때 cost 함수 최소화 과정을 진행할 때는 cross-entropy를 사용하게 된다.
softmax 특징 정리
1. 모든 값은 0에서 1 사이 값을 가짐
2. 전체 sum은 1 (위의 예시에서는 확률 0.7 / 0.2 / 0,1로 나타남)
3. one-hot encoding을 통해 가장 큰 값을 1로, 나머지를 0으로 리턴
'딥러닝(Deep-Learning)' 카테고리의 다른 글
GAN (Generative Adversarial Network) 정리 (0) | 2018.06.25 |
---|---|
[딥러닝] Backpropagation & L2 Regularization 정리 (0) | 2018.05.31 |
[딥러닝] Linear Regression 코드 실행 및 코드 분석 (0) | 2018.05.14 |
[딥러닝] Linear Regression의 cost 최소화의 TensorFlow 구현 (0) | 2018.05.08 |
[딥러닝] 텐서플로우(Tensorflow)로 간단한 선형 회귀(Linear regression)을 구현 (0) | 2018.05.08 |