Section 1
머신러닝
- 개요
- 입력 데이터가 주어졌을 때 답을 유추해 줄 수 있는 최적의 함수(오류 최소화)를 찾는 알고리즘 기법을 통칭. 어떤 데이터를 기반으로 함수를 찾느냐에 따라 머신러닝 기법이 달라짐.
- 머신러닝의 종류로는 기호주의/연결주의/확률주의/유전 알고리즘/유추 주의가 있음.
- 왜 필요한가
- 처리 해야 할 업무, 코드의 복잡도가 높아지면서 보다 지능화된 서비스 구현이 필요해짐.
- 종잡을 수 없는 패턴에 따른 애플리케이션 구현의 어려움.
ex) 필기체를 인식하려고 할 때, 동일한 숫자여도 변형으로 인해 if else와 같은 조건으로 구분하여 숫자를 인식하기 어려움. - 기존 컴퓨터 사이언스의 패러다임의 변화가 요구됨.
- 기존 컴퓨터 사이언스 : 결과를 출력하기 위해 로직을 구현
- 머신 러닝 : 입력 데이터가 있으면 결과값을 이용해 최적의 패턴을 유추
딥러닝(Deep Learning)
- 개요
- 심층신경망 기법을 통해 모델을 만드는 것. 뇌의 학습과 기억의 매커니즘을 모방한 방식.
- 임계점이 넘는 input이 들어오면 활성화 시켜 다른 뉴런으로 전하거나 output을 다른 방식으로 내보냄. 여러 개가 연결될수록 학습이 강화됨.(더 추상적이고 깊은 사고)
- y = W0+W1*X1+ … +Wn*Xn
- W : 가중치, parameter. 머신이 학습하는 것
- 학습을 통해 최적의 가중치 W값을 찾는 것이 딥러닝의 목표.
- 장점
- 매우 유연하고 확장성 있는 모델 구성 가능
- CNN Feature Extractor(기존에는 직접 feature를 뽑아낸 후 타 머신러닝 알고리즘을 적용했으나 딥러닝은 자체적인 모델링 수행), RNN, GAN, 강화 학습
- 과거에는 최적화하기 어려운 문제들을 딥러닝 기반으로 모델링 수행
- 다양한 영역에서 확장되어 활용
- 영상, 음성, 자연어 뿐만 아니라 수치최적 등 다양한 영역의 최적화 문제의 해결책 제시
- 영상, 음성, 자연어 뿐만 아니라 수치최적 등 다양한 영역의 최적화 문제의 해결책 제시
- 매우 유연하고 확장성 있는 모델 구성 가능
- 단점
- 매우 많은 컴퓨팅 연산 필요(GPU 등 고가 H/W 필요)
- 지나치게 고차원의 최적화 유도
- 많은 Weight가 필요함. 정형 데이터에서 큰 성능 향상이 어려움.
- 학습데이터에만 최적화시켜 오버피팅의 가능성이 큼.
퍼셉트론(Perceptron)
- 개요
- Hidden Layer가 없이 Single Layer로 구성된 가장 단순한 형태의 신경망. 입력 피처들과 가중치, Activation, 출력 값으로 구성.
- Weighted sum이 unit step(활성함수)을 넘어가면 1로 출력. 임계점 아래라면 0으로 출력.
- 퍼셉트론의 학습
- weight 값을 변경해나가며 예측 값과 실제 값의 차이가 최소가 되는 weight를 찾는 과정.
회귀(Regression)
- 개요
- 여러 개의 독립 변수와 한 개의 종속 변수 간의 상관관계를 모델링하는 기법을 통칭
- 아파트 가격(종속 변수)와 방 개수, 아파트 크기, 주변 학군 등(독립 변수)의 상관관계
- y = W0+W1*X1+ … +Wn*Xn 에서 Xn 이 독립 변수, Y가 종속 변수. 주어진 데이터를 기반으로 하여 최적의 Wn, 회귀 계수를 찾아내는 것.
- 여러 개의 독립 변수와 한 개의 종속 변수 간의 상관관계를 모델링하는 기법을 통칭
- 단순 선형 회귀
- 관련 값
- 상수항 : bias
- 에러 : 실제값과 모델 사이의 오류값
- 오류 측정 방법
- RSS : 오류 값의 제곱을 구해 더하는 방식. Error^2 = RSS. (실제값 - 예측값)^2의 합. 회귀식이 독립변수 X, 종속변수 Y가 중심 변수가 아니라 w변수(회귀 계수)가 중심 변수임을 인지해야함.
- MSE : 선형 회귀의 비용 함수. RSS를 학습 건수로 나누어 계산할 수 있음.
- 관련 값
경사하강법(Gradient Descent)
- 개요
- 점진적으로 반복적인 계산을 통해 W 파라미터 값을 업데이트하면서 오류 값이 최소가 되는 W 파라미터를 구하는 방식.
- 핵심은 어떻게 하면 오류가 작아지는 방향으로 W값을 보정할 수 있는가에 있음.
- 편미분을 활용해 최소값 반환
- 손실 함수의 편미분
- Loss는 MSE
- 여러 개의 w 파라미터를 가지고 있는 경우 순차적으로 편미분을 진행해 계수 값을 얻을 수 있음.
- W 값은 손실 함수의 편미분 값을 update하면서 계속 갱신함. 일정한 계수를 곱해 편미분 값을 감소시키는 방향으로 적용하며 이 때의 계수를 학습률이라고 함.
- 퍼셉트론 기반 단순 선형 회귀에서의 적용
- 정해진 반복 수만큼 손실함수 편미분을 구하고 weight, bias update 수행
확률적 경사하강법(Stochastic Gradient Descent)와 Mini-Batch GD
- 개요
- 입력 데이터가 크고 심층신경망으로 구성할 경우 레이어가 늘어나 gradient descent 방식은 많은 computing 자원이 소모됨.
- SGD : 전체 학습 데이터 중 한 건만 임의로 선택하여 GD 계산.
- Mini - Batch GD : 전체 학습 데이터 중 특정 크기만큼 (Batch 크기) 임의로 선택해서 GD 계산.
- 일반적으로 Mini-Batch GD가 대부분의 딥러닝 Framework에서 채택됨.
- 문제
- learning rate 크기에 따른 이슈. step이 너무 작을경우 최소점에 수렴하는데 너무 오랜 시간이 걸릴 수 있음. 반대로 step이 너무 클 경우 최소점을 찾지 못하거나 오히려 발산 될 수 있음.
- 전역 최소점(Global Minimum)과 국소 최소점(Local Minimum) 이슈.
Section 2
심층 신경망(다중 퍼셉트론) 이해
- 개요
- 기본 퍼셉트론은 간단한 문제만 해결이 가능
- 은닉층 (Hidden layer)가 포함된 다중 퍼셉트론으로 심층 신경망을 구성
- weight 파라미터의 개수가 훨씬 늘어남.
- 입력층 -> Hidden Layer -> 출력층 -> output
- 개별 미분 -> relu로 activate를 반복하면 파라미터의 수 증가에 따라 수식 자체가 너무 복잡해짐 -> backpropagation으로 극복
- 학습법
- Feed Forward 수행 -> Backpropagation을 수행하면서 Weight Update -> iteration으로 앞의 과정 반복.
- 출력층에 가까운 순으로 미분해가며 가중치를 업데이트하는 것.
오차 역전파(Backpropagation)의 이해
- 개요
- Chain rule을 이용해 output에서 가까운 순서대로 거꾸로 출력된 가중치들을 갖고, 그 가중치들을 update하는 것.
- 출력층부터 역순으로 Gradient를 전달하여 전체 Layer의 가중치를 update하는 방식
- Chain Rule
- 복잡한 고차원 식을 보다 간편하게 미분할 수 있도록 해줌.
- MSE를 계산할 때도 Chain rule을 적용하면 간단해진다.
- 아무리 개별 변수가 복잡하게 구성된 함수의 미분이라도 해당 함수가(미분 가능한) 내포 함수의 연속적인 결합으로 되어 있다면 연쇄 법칙으로 쉽게 미분 가능
활성화 함수(Activation Function)
- Sigmoid Function
- 출력층의 이진 분류시 마지막 classificcation에서 사용
- 더 이상 Hidden Layer에 사용되지 않음.
- Gradient가 0이 되고 W -> W+G이기 때문에 G가 의미가 없어짐.
- 평균이 0이 아님.
- Hyperbolic Tangent
- Sigmoid와 동일하게 입력값이 커질수록 Vanishing Gradient 문제가 발생.
- 하지만 평균은 0이 됨.
- Rectified Linear Unit (ReLU)
- Vanishing Gradient 이슈 해결
- Leaky ReLU, ELU 등 많이 나오지만, 은닉층에서 가장 많이 쓰임
- Softmax
- multi classification에 사용
- 목적
- 딥러닝 네트워크에 비선형성을 적용하기 위함
- 하지만, 비선형성은 오버피팅이 일어나기 쉬움.
MSE
- 개요
- 회귀에서는 주로 MSE 사용. 분류에서는 Cross Entropy
Cross Entropy Loss
- 개요
- classification 출력층 중 softmax는 multi, sigmoid는 binary
- 예측값과 실제값의 균일도를 줄이는 방식
(위 : softmax, 아래: sigmoid)- y hat: sigmoid가 적용된 값
- Cross Entropy 사용 이유
- Squared Error 기반은 일반적으로 잘못된 예측에 대해서 상대적으로 높은 비율의 패널티가 부과되어 Loss값의 변화가 심함.
- 매우 잘못된 예측의 경우 CE보다 낮은 비율의 패널티
- 계산 방식
- c는 클래스의 개수
- 실제값이 아닌 값들은 모두 0. 실제값의 결과만 1. -> 실제값에 해당하는 loss만 계산됨
- -log를 취함으로써 아주 잘못된 예측 결과에는 매우 높은 Loss 부여
Optimizer
- 개요
- Gradient Descent를 최적화하는 모든 방법
- 보다 최적으로 GD를 적용하기 위해 사용
- 최소 Loss로 보다 빠르고 안정적으로 수렴할 수 있는 기법 적용이 필요
- Global minimum을 적절하게 찾지 못하는 이슈에 대응하기 위해 나옴.
- 방식
- Learning rate조절 (Local minimum 이슈)
- Gradient를 보정해서 넣어줌 (Local minimum 이슈)
- Momentum (Gradient 보정)
- AdaGrad (learning rate를 조절)
- RMS Prop (learning rate를 조절)
- ADAM (Gradient 보정 & Learning rate 조절) ~= Momentum + RMS Prop
Momentum
- 개요
- 가중치를 계속 update 수행시마다 이전의 Gradient들의 값을 일정 수준 반영시키면서 신규 가중치로 update 적용
- Local minimum에서 빠져나올 수 있게 해줌.
- 효과
- SGD의 경우는 무작위한 데이터를 기반으로 Gradient를 계산하므로 최소점을 찾기 위한 최단 스텝 형태로 가중치가 update되지 못하고 지그재그 형태의 update가 발생하기 쉬움.
- Momentum 을 통해 지그재그 형태의 update를 일정 수준 개선 가능.
AdaGrad(Adaptive Gradient)
- 개요
- 가중치 별로 서로 다른 Learning Rate를 동적으로 적용
- 적게 변화된 가중치 -> 큰 Learning Rate. 많이 변화된 가중치 -> 작은 Learning Rate
- 엡실론은 분모가 0이 되는 것을 방지하기 위해 아주 작은 수 사용.
- Gradient의 제곱은 언제나 양이기 때문에 iteration마다 st의 값이 계속 증가하며 Learning Rate가 아주 작게 변환되는 문제점 발생.
RMSProp
- 개요
- 지나치게 Learning Rate가 작아지는 것을 막기 위해 Gradient 제곱 값을 단순히 더하지 않고 지수 가중 평균법(Exponentially weighted Average)로 구함.
- 지수 가중 평균 계수는 오랜 과거의 Gradient 값의 영향을 줄일 수 있도록 설정. 보통 0.9를 적용
- 과거 Gradient 값의 영향력이 지속적으로 상쇄
Adam(Adaptive Moment Estimation)
- 개요
- RMSProp과 같이 개별 Weight에 서로 다른 Learning Rate를 적용함과 동시에 Gradient에 Momentum 효과를 부여
- Learning Rate를 적용하는 부분은 RMS와 유사. 지수 가중 평균 적용.