이 포스팅의 상당 부분은 다음의 문서를 참고했습니다.
https://wikidocs.net/24987
딥 러닝의 기본 구조는 인공 신경망 입니다.
인공 신경망 Artificial Neural Network
방향에 따른 인공 신경망의 종류
- 순방향 신경망 Feed-Forward Neural Network : 입력층에서 출력층 방향으로 연산이 전개되는 신경망
- 순환 신경망 Recurrent Neural Network: 은닉층의 출력값을 출력층으로도 보내고 다시 은닉층의 입력으로도 사용한다.
활성화함수
선형 함수가 아니라 비선형 함수여야 합니다. (*비선형 함수: 직선 1개로 그릴 수 없는 함수)
인공신경망의 성능 향상을 위해 은닉층을 계속 추가해야 하는데, 선형 함수를 사용하면 은닉층을 쌓을 수가 없기 때문입니다. 선형 함수로는 은닉층을 추가해도 1회 추가한 것과 여러번 추가한 것의 차이를 줄 수 없습니다.
활성화함수의 종류
1. 시그모이드: S자 모양. 0~1의 범위. 기울기 소실 문제 있음. 연산 필요.
2. 하이퍼볼릭탄젠트 함수: S자 모양. -1~1의 범위. 시그모이드보다 기울기 소실 문제가 적음. 연산 필요.
3. 렐루 함수: __/ 모양. 0이상 양수 범위. 특정 값에 수렴하지 않아서 깊은 신경망에서 잘 작동함. 연산 불필요. 단순 임계값이여서 연산 속도가 빠름. 단, 입력값이 음수면 기울기도 0이 되는 문제가 있음. [죽은 렐루 dying ReLU]
4. 리키 렐루: 죽은 렐루 문제 보완 목적. 입력값이 음수면 렐루처럼 0을 반환하는 것이 아니라 매우 작은 수를 반환함.
5. 소프트맥스 함수: __/의 곡선느낌모양. 시그모이드는 이진분류, 소프트맥스는 다중클래스분류.
손실함수 Loss Function = 오차 함수.
실제값과 예측값의 차이를 수치화해주는 함수.
오차가 클 수록 손실함수의 값이 크고 오차가 작을수록 손실함수의 값은 작다.
손실 함수의 값을 최소화하는 매개변수는 가중치 W와 편향 b입니다.
손실 함수의 값을 최소화 하는 과정 = 딥 러닝의 학습 과정 = 가중치와 편향 값을 찾아가는 과정.
손실함수의 종류
1. 배치 경사 하강법 Batch Gradient Descent
- 에포크 1번에 모든 매개변수를 1회 갱신.
- 전체 데이터를 고려하여 학습함.
- 단점: 메모리 많이 필요함. 에포크 당 시간이 오래 걸림.
- 장점: 글로벌 미니멈을 찾을 수 있음.
2. 확률적 경사 하강법 Stochastic Gradient Descent.
- 매개변수값 갱신 시, 전체 데이터가 아니라 랜덤 선택된 1개 데이터에 대해서만 계산한다.
- 장점: BGD보다 빠르다.
- 단점: 매개변수 변경폭이 불안정하다. 배치경사하강법 BGD보다 정확도가 낮을 수 있다.
3. 미니 배치 경사 하강법 Mini-Batch GRadient Descent.
- 정해진 양에 대해서 계산하여 매개변수 값 갱신.
- 장점: BGD보다 빠르다. SGD보다 안정적이다.
4. 모멘텀 Momentum.
- 개념: 경사하강법에 관성의 개념을 접목시킴. 계산에 한 시점(step) 전의 값을 일정비율 반영.
- 장점: 로컬 미니멈에 도달했을 때 계산이 끝나는 상황을 방지할 수 있음.
5. 아다그라드 Adagrad.
- 매개변수마다 다른 학습률 learning rate 적용. 변화가 많은 매개변수는 학습률이 작게 설정, 변화가 적은 매개변수는 학습률을 높게 설정.
- 단점: 학습이 지속되면 학습률이 많이 떨어짐.
6. 알엠에스프롭 RMSprop.
- 아다그라드의 단점을 개선함. 학습을 지속해도 학습률이 많이 안 떨어짐.
7. 아담 Adam.
- Adam = Momentum + RMSprop.
퍼셉트론 Perceptron.
단층 퍼셉트론
- AND, NAND, OR 연산 가능.XOR 연산 불가능.
- 은닉층이 존재하지 않음.
다층 퍼셉트론 MLP. Multi-Layer Perceptron.
- AND, NAND, OR, XOR 연산 가능.
- 은닉층이 존재함. (단층 퍼셉트론에 은닉층이 1개 이상 추가된 신경망.)
(*은닉층이 2개 이상이면 심층 신경망)
- MLP의 사례: 딥 오토인코더 Depp AutoEncoder, 컨볼루션 신경망 Convolutional Neural Network.
n-gram 언어 모델
- n-1개의 그램들을 카운트한 것을 분모로, n-gram을 카운트한 것을 분자로 하여 다음 단어 등장 확률 예측하는 사례. [희소 문제 sparsity problem] 훈련 코퍼스에 단어 시퀀스가 존재하지 않으면 확률이 0이 되어버림. 기계가 단어 간 유사도를 모르기 때문에 발생하는 문제임.
피드 포워드 신경망 언어 모델 Neural Network Language Model, NNLM.
- 신경망 언어 모델의 시초.
- 단어 유사도를 학습할 수 있도록 설계하여 희소 문제를 해결.
- 단어 간 유사도를 반영한 벡터를 만드는 [워드 임베딩 word embedding]
- 유사한 목적으로 사용되는 단어들은 유사한 임베딩 벡터 값을 얻게 된다.
- NNLM의 단점: 문맥정보는 참고할 수 없음. 고정 길이 입력만 사용 가능.
- 임베딩 벡터 아이디어는 Word2Vec, FastText, GloVe 등으로 발전함.
NNLM방법: 원-핫 인코딩 (단어에 벡터를 부여함.), 윈도우 크기만큼 짤라서 분석. 입력층-투사층projection layer-은닉층-출력층의 구조. (*투사층과 은닉층의 차이: 투사층은 활성화 함수가 없음. 투사층은 선형층, 은닉층은 비선형층. *투사층과 은닉층의 공통점: 가중치 행렬과의 연산이 이루어짐.) 테이블 룩업 과정. (원-핫 벡터를 더 차원이 적은 임베딩 벡터embedding vector로 맵핑.) (임베딩 벡터들은 초기에는 랜덤값, 학습 과정 중에는 값이 계속 변경됨.)
NNLM의 손실 함수는 cross-entropy.
순환 신경망 RNN. Recurrent Neural Network
순환 신경망 != 재귀 신경망
순환 신경망 RNN (Recurrent): 사슬 형태 계산 그래프.
재귀 신경망 RNN (Recursive): 트리 형태 계산 그래프. RNN을 트리 구조로 일반화한 것.
장단기 메모리 LSTM. Long Short-Term Memory.
- 순환신경망의 단점인 시점이 지날수록 정보량이 손실되는 과정(=장기 의존성 문제)를 개선함.
- 은닉층의 메모리셀에 입력 게이트, 망각 게이트, 출력 게이트를 추가하여 불필요한 기억을 지우고, 기억해야할 것을 결정.
- 은닉 상태(hidden state)를 계산하는 식에 셀 상태(cell state) 값이 추가되어 전통적인 RNN보다 복잡해졌음.
게이트 순환 유닛 GRU. Gated Recurrent Unit.
- LSTM의 발전된 버전. LSTM과 마찬가지로 장기 의존성 문제를 해결할 수 있음. 은닉 상태를 업데이트하는 계산을 줄임. 성능은 유사하고 구조는 간단해짐.
- LSTM의 출력/입력/삭제 게이트 대신 GRU는 업데이트/리셋 게이트로 2개임.
RNN 언어 모델 RNNLM. Recurrent Neural Network Language Model.
- NNLM이 고정길이 단어만 입력으로 받을 수 있는 단점을 해결함.
- RNNLM의 테스트 단계에서는 이전 시점의 예측 결과를 다음 시점의 입력으로 넣으면서 진행.
- RNNLM의 훈련 단계에서는 [교사 강요 teacher forcing] 기법으로 진행.
[교사 강요 teacher forcing]
- 모델이 t시점에서 예측한 값 대신 t시점의 레이블 (=실제 알고 있는 정답)을 t+1시점의 입력으로 사용.
- RNN의 훈련 시간을 빠르게 하기위함.
- 출력층의 활성화 함수: 소프트맥스.
- 손실 함수: 크로스 엔트로피.
댓글