1. 딥러닝 기초
*본 게시물은 22-1학기 연세대학교 일반대학원 딥러닝을이용한비정형데이터분석(이상엽 교수님) 수업 내용을 정리한 것입니다.
1. 딥러닝 기초
1. 딥러닝 vs 머신러닝
딥러닝은 머신러닝의 일종입니다. 신경망 기반의 알고리즘이며, 일반적으로 비정형 데이터(텍스트, 비디오, 오디오, 이미지...)에 대해 머신러닝 모형보다 성능이 더 좋다고 알려져 있습니다. 딥러닝이든 머신러닝이든 둘 다 수학적 모형이기에 파라미터를 가집니다. 파라미터의 궁극적 목표는 비용함수를 최소화하는 최적 파라미터가 되는 것입니다.
딥러닝이 머신러닝보다 좋은 이유는 알고리즘으로 비선형함수를 사용하기 때문입니다.
즉, 머신러닝 알고리즘 중 선형 회귀를 떠올려보면 다음과 같은 식이 성립합니다.
이를 신경망처럼 표시를 하면, 은닉층 없이 입력층에서 곧바로 출력층으로 연결되는 그림을 상상해볼 수 있습니다.
이에 따라 딥러닝처럼 독립변수 정보 중 종속변수 예측에 중요한 정보를 추출하는 과정이 없어지고, 입력층만 예측하는 일이 발생하게 되어, 예측 성능이 저하될 것입니다. 결론적으로 신경망에서 가장 중요한 역할을 하는 것은 은닉층입니다.
2. 신경망
신경망은 사람의 뇌구조를 본뜬 것입니다. 워낙 많이 보셨던 내용이니 넘어가겠습니다.
신경망은 입력층, 은닉층, 출력층, 그리고 각 층의 노드와 다른 층의 노드를 잇는 에지, 편향 노드로 구성되어 있습니다. 입력층과 출력층은 보통 개수가 1개로 정해져 있는 경우가 많고, 사용자가 의지를 통해 수를 조절할 수 있는 경우는 은닉층 뿐입니다.
은닉측이 1개면 shallow neutal network, 은닉층이 2개 이상이면 deep neutral network로 부릅니다.
1) 입력층
-입력층에서는 관측치에 대한 독립변수(x)를 입력받아 출력층 쪽으로 보내게 됩니다.
(여기서 독립변수란 feature를 뜻합니다)
- 입력층에 입력된 독립변수의 정보는 은닉층으로 전달되어, 종속변수(y)를 예측하는 데에 중요한 정보들이 추출됩니다.
-입력층 노드의 수는 데이터에 존재하는 독립변수 수와 동일합니다. 즉 feature 수와 동일합니다.
2) 은닉층
-입력된 독립변수를 받아, 종속변수 예측에 필요한 정보를 추출하는 층입니다.
-사용자에 의해 개수가 정해지는, hyper parpameter 성격을 띱니다.
-은닉 노드로 입력된 값은 그 값 그대로를 내보내지 않습니다. 반드시 활성화 함수를 거치게 되어있습니다.
3) 각 노드를 잇는 에지(weight connection)
에지는 각 에지마다 고유의 파라미터 값을 가집니다.
- 이 파라미터 값은 독립변수와 종속변수의 관계를 가장 잘 정의하는 값이어야 하며, 가장 잘 정의하는 값일수록 오차가 0에 가까워집니다. 즉, 비용함수를 최소화하는 값이 바로 최적 파라미터 값입니다.
- 이 최적 파라미터 값을 찾기 위해 비용함수를 사용하게 됩니다. 이에 따라 비용함수는 파라미터에 대한 함수가 됩니다.
- task마다 쓰이는 비용함수가 다릅니다. 보통 회귀는 MSE(Mean Square Error), 분류는 교차 엔트로피(Cross Entropy)를 사용하게 됩니다.
4) 출력층
-회귀는 출력층이 하나입니다.
-반면 분류는 출력층이 2개 이상입니다. 종속변수가 취하는 값의 종류에 따라 출력층 노드 갯수가 바뀝니다.
-분류 task 출력층 출력 노드에는 활성화 함수 중 softmax가 존재합니다. softmax는 모든 값의 합을 1로 만들기에 확률로 생각하기가 쉬운 함수입니다.
-출력 노드의 수는 신경망을 가지고 풀고자 하는 지도학습 문제에 따라 달라집니다. 회귀는 1개, 분류는 종속변수가 취하는 값의 수만큼 출력노드가 존재합니다.
(1) 회귀
예시) 독립변수: 평수, 연식 2개 / 종속 변수: 아파트 가격 / 편향 존재 가정
위 그림에서 알 수 있듯이 회귀 문제는 출력 노드가 1개입니다. 위 그림의 출력 노드에서는 종속변수의 예측치(와이햇)를 출력하게 됩니다.
독립변수와 종속변수 간 관계를 가장 잘 정의하는 파라미터를 찾기 위해 MSE 비용함수를 사용합니다.
(2) 분류
예시) 독립변수: 흡연 여부, 성별 / 종속 변수: 폐암에 걸렸는지 여부(1:걸림, 0:아님) / 편향 존재 가정
위 그림에서 출력층이 출력하는 값은 종속변수가 각 값을 취할 확률입니다. 즉 첫번째 출력노드의 출력값은 종속변수가 0일 확률, 두번째 출력노드의 값은 종속변수가 1일 확률입니다.
교차 엔트로
5) 편향 노드(bias node)
-입력층, 은닉층에 존재합니다.
-선형 회귀 모형의 intercept와 비슷한 역할을 하며, 편향 노드에서 출력되는 값은 1이라 생각하면 편합니다.
3. 신경망 작동 순서
신경망의 작동순서는 다음과 같습니다.
1) 정답이 있는 데이터 준비 |
2) 정답이 있는 데이터 split: 학습(training&val. data), 평가(test) 데이터 |
3) 신경망(=딥러닝 모형)을 사용해 학습 데이터에 존재하는 독립변수<=>종속변수 간 관계 파악 |
4) 학습 데이터에 대해 비용함수를 최소화하는 최적 파라미터 값 찾기 |
5) 학습을 통해 완성된 최적 파라미터를 가진 모형의 성능을 평가(test) 데이터를 사용하여 평가 |
6) 평가 성능이 좋을 경우, 우리가 풀고하자는 문제에 대한 데이터에 적용하여 종속변수 값 예측 |
4. 신경망 모형의 작동 원리(종속변수 예측 방법)
예1) 회귀문제에서의 작동
(1) 신경망 모형 결정
조건) 풀고자 하는 문제: 아파트값 예측 / 종속변수: y &연속변수(회귀!) / 독립 변수: 평수(x1), 연식(x2)
▶ 입력층의 노드 수는 2개(독립변수가 2개)
▶ 출력층의 노드 수는 1개(회귀 문제)
▶ 은닉층 갯수& 은닉 노드 수는 사용자 마음대로 정할 수 있음
▶ 편향노드는 아무런 값을 입력받지 않으며, 1을 전달하는 역할
조건에 따라 위와 같은 신경망이 완성되었습니다 :D
신경망의 파라미터는 사실 2개로 구분됩니다. 편향과 weight인데요, 위의 그림에서도 편향은 b1라는 파라미터로, 웨이트는 W1 등의 파라미터로 표현되었습니다.
(2) 학습 방법: 비용함수를 최소화하는 모형의 파라미터 값 찾기
-회귀의 비용함수는 MSE이므로 다음의 식으로 계산을 시작할 예정입니다.
(3) 진짜 숫자 넣어서 계산해보기
만일 아래와 같은 조건이 주어졌다고 가정합니다.
첫 번째 관측치는 34평(x1), 연식은 5년(x2), 정답 가격은 y입니다. 이를 신경망을 통해 계산하여 종속변수를 예측해보겠습니다.
일단 입력층에서부터 첫번째 은닉층까지는 아래와 같이 계산됩니다.
첫 번째 은닉층에서 두 번째 은닉층까지는 다음과 같이 계산됩니다.
이제는 예측한 와이햇과 실제 y값인 5와 비교를 해야 합니다 OMG... 비용함수는 MSE를 사용하므로 다음과 같이 계산됩니다.
비용함수 값이 작을수록 정답에 가까운 것으로 생각하면 됩니다.
예2) 분류 문제에서의 작동은 복잡하므로 나중에...^^
2. 활성화 함수
1) 활성화 함수란?
활성화함수란 노드에 입력된 값을 변환하여 출력하는 역할을 하는 함수로, 신경망에서는 주로 비선형 함수를 씁니다.
실제 신경망에서는 Z1, Z2와 같이 값을 그대로 내보내지 않습니다. 반드시 활성화 함수를 거쳐서 특정 형태로 변환 합니다.
2) 활성화 함수의 역할과 특징
(1) 활성화 함수는 은닉 노드에서 독립변수의 정보를 추출하는데 사용됩니다.
- 활성화 함수에 비선형 함수를 쓰는 이유는 독립변수와 종속변수 간의 비선형 관계를 파악하기 위해서입니다.
- 선형 함수는 아무리 중첩해도 선형함수가 되기에 여러 은닉층을 쌓는 효과를 전혀 누릴 수 없습니다.
- 비선형 관계를 잘 파악한다는 것은 독립변수 정보 중 종속변수 예측에 필요한 정보를 더 잘 파악한다는 뜻입니다.
- 예측에 필요한 정보를 추출하는 장소는 은닉층입니다.
(2) 신경망에서의 활성화 함수
- 쉬운 미분: 신경망에서 쓰이는 활성화 함수는 미분이 쉬워야 합니다. 경사 하강법을 쓰기 때문입니다.
또한 신경망의 입력/회귀 출력 노드를 제외한 모든 노드에는 활성화 함수가 존재하기에, 미분이 어려우면 computing 시간이 매우 오래걸립니다.
- 신경망 주요 활성화 함수: 시그모이드 함수, 하이퍼볼릭 탄젠트(tanh), 렐루(ReLU), 리키 렐루(Leaky ReLU) 등이 쓰입니다.
흔히 그림에서는 노드 반을 쪼개서 왼쪽은 Z1, 노드 오른쪽은 활성화 함수를 거친 f(Z1)값을 서술하기도 합니다.
입력노드와 회귀 출력노드를 제외한 모든 노드에는 활성화함수가 존재한다고 했습니다. 분류 문제의 대표적인 출력 노드 활성화 함수는 softmax임을 앞에서 말씀드렸습니다 :D softmax는 모든 값을 합쳤을 때 1이 되는, 마치 확률처럼 보이는 값을 리턴하기 때문에 분류 문제에서 쓰입니다.
3) 활성화 함수별 특징
(1) 시그모이드 함수(Sigmoid)
-로지스틱 회귀 모형의 cdf인 로지스틱 function이 포함됩니다. 즉 누적확률분포이므로 0~1사이의 값을 취합니다.
-시그모이드는 미분이 용이합니다. 또한 미분 결과가 시그모이드 함수와 크게 다르지도 않습니다.
(2) 하이퍼볼릭 탄젠트(Hyperbolic tangent; tanh)
- 시그모이드와 비슷한 S커브이나, 가질 수 있는 값이 -1~1인 점에서 다릅니다.
- 시그모이드보다 더 넓은 값을 가지기에 더 널리 쓰이고 있으며, 텍스트 데이터 분석에 많이 사용됩니다(그렇다고 하네용.. 첨 알았ㅇ..)
- 반면 이미지 처리에서 많이 쓰이는 함수는 ReLU라 합니다 :D
(3) 렐루(Rectified linear unit; ReLU)
-max function이며 인자를 2개 가집니다. 첫 인자는 0, 나머지 인자는 z입니다.
- 만일 z가 0보다 크면 y=x로 인해 f(z)=z가 리턴됩니다.
-그러나 z가 0보다 같거나 작으면 0이 됩니다.
- ReLU의 문제점: 기울기가 1, 0으로 구성되었기에 기울기가 0인 경우 경사하강법에서 문제가 발생할 수 있습니다. 이를 보완하고자 Leaky ReLU가 나옵니다.
(4) 리키렐루(Leaky ReLU)
- 렐루와 같은 max function이나, 첫 번쨰 인자가 εz가 됩니다.(입실론ε은 보통 0.01을 사용합니다)
- 따라서 z가 0보다 큰 경우에는 f(z) = z로 ReLU와 동일
- z가 0과 같거나 작은 경우 f(z) = εz가 됩니다.
- 근데 막 그렇게 큰 차이는 안난다고 하네요......