본문 바로가기

카테고리 없음

20220707

자주 사용되는 신경망 구조

 

1) 방사선 기저 함수(radical basis function, RBF) 신경망

대부분 층이 두 개. 첫 층은 입력 데이터만 이용하기 때문에 비지도 방식, 둘째 층은 입력 데이터와 타겟 데이터를 이용해 가중치를 구하기 때문에 지도 학습 기법 사용함.

깊이가 아니라 특정 공간의 크기를 늘리면서 능력을 증가시킴. 둘째 층에는 각 노드의 원형(prototype)이 들어있고, 활성화 값은 원형과 입력 자료의 유사성에 따라 결정된다.

기존의 MLP(multi-layer perceptron, 다층 퍼셉트론)이랑의 차이점은 MLP는 선형으로 데이터를 구분하고 RBF는 비선형이다.

 

2) 제한 볼츠만 기계(restricted Boltzmann machine, RBM)

에너지 최소화라는 개념을 이용해서 비지도 방식으로 자료를 모형화하는 신경망 구조. 임력층과 은닉층 총 두 층으로 이루어져 있어 심층 신경망은 아니다. (심층 신경망은 입력, n개의 은닉, 그리고 출력)

역전파로 훈련할 수 없음.

 

3) 순환 신경망(recurrent neural network, RNN)

하나의 연속된 구성 요소들 사이에 의존관계가 존재, 특정 입력 자료점은 오직 그 이전 시간의 입력들이 이미 주어져 하나의 은닉 상태로 변환된 이후에 주어질 때만 도움됨. 이전 시간들에서 입력들로부터 만들어진 은닉 상태들과 직접 상호작용 가능.

시간 역전파(BPTT) 사용

튜링 완전(Turing complete), 즉 충분한 자료와 계산 자원이 주어진다면 그 어떤 알고리즘도 흉내 낼 수 있음

 

4) 합성곱 신경망(convolution neural network)

신경망의 각 층은 공간적 크기와 깊이를 가진 3차원, 깊이는 특징의 수에 해당한다.

합성곱 신경망의 한 층의 깊이는 신경망 자체의 깊이, 즉 층의 수로 결정되는 것 과는 다름.

입력층에서 입력은 RGB같은 색상 채널들에 해당하고, 은닉층에서 이 채널 특징은 이미지에 존재하는 다양한 종류의 도형들을 부호화한다. 입력이 grayscale인 경우 채널이 하나이므로 입력층의 깊이가 1이지만, 그 이후의 층들은 여전히 3차원일 수 있음.


 

MNIST 데이터 베이스 : 손으로 쓴 숫자들의 이미지를 담은 대형 데이터 베이스

ImagNet 데이터 베이스 : 여러 범주의 이미지를 담은 대형 데이터 베이스

 

 

*이진 분류 모형을 위한 신경망 구조

 

회귀 : 예측하고 싶은 목푯값(=종속변수)가 숫자일 때 회귀를 대부분 이용.

 

아달린 규칙(Adaline) = 위드로 호프 학습 = 최소 평균 제곱법

 

로지스틱 회귀(logistic regression) : 견본들을 확률에 근거해서 분류하는 확률 모형. 분류가 확률적이기 때문에 각 훈련 견본이 관측된 부류에 속할 확률의 예측 값이 최대한 커지도록 매개 변수들을 최적화 하는 것이 자연스러운 접근.

최적화 목표는 최대 가능도 추정(maximum-likelihood estimation) 기법 이용

훈련 자료의 가능도는 각 훈련 견본의 관측된 분류명들의 확률들의 곱으로 정의, 이 목적 함수의 값이 클수록 좋음

 

지지 벡터 기계(SVM) : 매끄러운 손실함수를 쓰는 로지스틱 회귀와는 다르게 경첩 손실 함수를 사용. 경첩 손실 함수의 핵심은 양성 견본은 그 값이 1 미만일 때만 벌점이 가해지고, 음성 견본은 그 값이 1보다 클 때만 벌점이 가해진다는 점.

 

*다중 분류 모형을 위한 신경망 구조들

 

1) 다부류 퍼셉트론

 

2) 웨스턴-왓킨스 SVM

 

3) 다항 로지스틱 회귀(소프트맥스 분류기) : 부류에 대한 소속도를 확률 값으로 예측

 

4) 다중 분류를 위한 위계적 소프트맥스

 


 

신경망의 경우 해석성이 부족하지만 역전파를 사용하면 특정 훈련 견본의 분류에 가장 크게 기여한 특징을 결정하는 것이 가능.

 

* 자동 부호기(autoencoder)

 

입력층의 차원과 출력층의 차원이 같고, 은닉층이 입, 출력층보다 적은 수의 단위로 구성됨. 결과적으로 원래의 자료를 온전하게 복원할 수 없음.

자료의 축소된 표현을 부호라고 부른다. 즉 자동 자료 축소기.

인코더와 디코더(=부호기와 복호기)가 가중치를 공유, 가중치를 묶는다고도 한다.

 

심층 자동 부호기(deep autoencoder, stacked autoencoder) : 여러 단계의 은닉층을 가짐.

 

word2vec : 단어 벡터 간 유의미한 유사도를 반영할 수 있도록 단어의 의미를 수치화 할 수 있는 대표적인 방법

연속 단어 모음(continuous bag-of-words, CBOW) : 문맥에서 목표 단어 예측 모형

스킵 그램 모형 : 목표 단어에서 문맥 단어를 예측하는 모형

부정 표집 스킵그램(skip-gram with negative sampling, SGNS) : 단어들을 말뭉 치 안에서의 도수에 비례해서 표집함으로써 음의 문맥을 인위적으로 생성

 

 

*역전파 알고리즘

 

batch : gpu가 한번에 처리하는 데이터의 묶음

 

배치 경사 하강법(batch gradient descent : BGD)

전체 학습 데이터를 하나의 배치(크기가 b)로 묶어 학습시키는 경사 하강법.

전체 데이터에 대한 모델의 오차의 평균을 구한 후, 이를 이용하여 미분을 통해 경사를 산출, 최적화를 진행.

전체 데이터를 통해 학습시키기 때문에 가장 업데이트 횟수가 적음. (1 epoch1회 업데이트)

전체 데이터를 모두 한번에 처리하기 때문에 메모리가 많이 필요.

항상 같은 전체 데이터에 대해 경사를 구하기 때문에 수렴이 안정적.

 

확률적 경사 하강법(stochastic gradient descent : SGD)

전체 데이터 중 단 하나의 데이터를 이용하여 경사 하강법을 1회 진행 (배치 크기가 1)

전체 학습 데이터 중 랜덤하게 선택된 하나의 데이터로 학습을 하기 때문에 확률적.

배치 경사 하강법에 비해 적은 데이터, 속도가 빠름, 수렴에서 shooting이 많이 발생.

각 데이터에 대한 손실 값의 기울기가 약간씩 달라 개별데이터에 대해 미분을 수행하면 기울기의 방향이 매번 크게 바뀜.

 

미니 배치 확률적 경사 하강법(mini-batch stochastic gradient descent : MSGD)

전체 데이터를 batch_size개 씩 나눠 배치로 학습 (배치 크기를 사용자가 지정)

shooting이 적당히 발생

batch 사이즈는 대부분 2n

 

초매개변수(hyper parameter) : 모델 내부에서 결정되어 사용자에 의해 조정되지 않는 매개변수와는 달리, 사용자가 직접 셋팅 할 수 있는 값

layer , 학습 횟수 등

초매개변수는 격자 검색(grid search)를 통해서 제일 잘 조정된다.

격자 검색 : 모델 초매개변수에 넣을 수 있는 값들을 순차적으로 입력 후, 가장 높 은 성능을 보이는 초매개변수를 찾는 탐색 방법

 

* 특징 전처리

 

평균 중심화(mean-centering)와 가산적 전처리

자료가 평균을 중심으로 한다고 가정할 때, 평균들의 벡터를 각 자료 값에서 뺌.

가산적 전처리 : 모든 특징 값이 음수가 아닌 것이 바람직할 때 사용. 절댓값이 가장 큰 음의 값을 각 자료점의 해당 특징 성분에 더한다.

 

2. 특징 정규화(feature normalization)

* 최적화 알고리즘 종류

 

확률적 경사 하강법 (pass한다 위에봐)

 

Momentum 알고리즘(운동량 기반 학습법)

누적된 과거 gradient가 지향하고 있는 어떠한 방향을 현재의 gradient에서 보정. 최적화를 향해 진행하던 속도에 관성을 주어 느린 학습 속도, saddle point에서 학습종료, 진동이 심한점 문제를 해결하는 알고리즘.

overshooting 문제가 있음

 

3. Nesterov momentum(네스테로프 운동량 방법)

현재 위치의 gradient를 이용하지 않고 속도v_t 만큼 전진 후 gradient 이용. 모험적으로 먼저 진행한 후 에러 고정.

관성을 주는 점은 모멘텀과 같지만 overshooting을 막기 위해 미리 가보고 overshooting 된 만큼 다시 내려가는 방식.

 

4. Adagrad 알고리즘 (adaptive gradient의 줄임말)

손실 함수 곡면의 변화에 따라 적응적으로 학습률을 정함.

경사가 가파를 때는 큰 폭으로 이동하여 최적화 경로를 벗어나 최소 지점을 피하고, 경사가 완만할 때는 최적해 경로가 아닐 가능성이 있으므로 큰폭으로 이동.

, 많이 변화한 변수는 최적해에 근접했을 거란 가정하에 작은 크기로 이동하면서 세밀하게 값을 조정하고 반대로 적게 변화한 변수들은 학습률을 크게 하여 빠르게 오차 값을 줄이고자 하는 방법.

 

5. RMSProp

Adagrad와 비슷하지만 지수 가중 이동 평균(=지수적 평균)을 추가로 사용함.

지수 가중 이동 평균은 가중치 β를 사용. 이전 값에 β, 현재 값에 (1-β)를 곱한다.

└β를 이용해 기울기를 정규화 하고, 기울기를 이용해 각 매개변수를 갱신한다.

Adagrad는 오래된 계수들의 효과가 사라지지만, RMSProp는 이를 방지

 

6. AdaDelta(Adaptive Delta)

Adagrad, RMSProp, Momentum 모두 합친 경사하강법

전역 학습 속도 매개 변수를 따로 두지 않고, 이전 반복들의 점진적 갱신들의 함수로 전역 학습 속도를 계산.

 

7. Adam

MomentumRMSProp이 합쳐진 형태

진행하던 속도에 관성을 주며 최근 경로의 곡면에 변화량에 따른 적응적 학습률을 가짐

 

 

기울기 절단(gradient clipping) : 서로 다른 방향의 편미분들의 크기 차이가 심할 때를 해결하기 위해 사용. 지금까지의 기울기 값들이 아닌 현재 기울기 값만을 절단.

값 기반 절단

노름 기반 절단

 

Hessian Matrix(헤시안 행렬, 헤세 행렬) : 어떤 함수의 2계 도함수들을 이용하여 만든 행렬.

기하학적 관점에서 보면 헤시안 행렬을 이용해 특정 함수의 특정 위치가 위로 볼록, 아래로 볼록, 안장점인지 구분할 수 있다, (더 경사지게 함)

 

 

* 배치 정규화

기울기 소실, 폭주를 극복하기 위한 하나의 방안으로 내부 공변량 변화를 줄일 수 있다.

내부 공변량 변화 : 훈련 도중 매개 변수들이 변함에 따라 은닉 단위들의 활성화 값이 변해 훈련 자료가 불안정해져 학습의 수렴이 느려짐.

기본 개념은 은닉층들 사이에 정규화층(normalization layer)을 추가하는 것.

신경망의 각 층에 들어가는 입력을 평균과 분산으로 정규화.

각 층에서 활성화 함수를 통과하기 전 수행, 유동적으로 만들어진 자료로 매개 변수를 학습

 

* 학습 알고리즘 구현 가속과 압축 요령

1. GPU 가속 : 단일 명령 다중 스레드(single instruction multiple threads, SIMT) 방식 을 사용하는 GPU를 사용해 가속

2. 병렬 구현 : 다수의 CPU 혹은 GPU를 사용해 병렬화.

3. 모형 실행 시 압축 알고리즘 사용

 

일반화 능력(generalization) : 학습 모형이 이전에 배우지 않은 사례들에 대해서도 유용한 예측을 제공하는 능력

 

신경망의 과대 적합(overfitting)을 피하는 주요 방법

1. 벌점 기반 정칙화

2. 앙상블 기법 : 여러 개의 분류기를 생성하고 그 예측의 평균을 최종 예측값으로 사용

3. 조기 종료

4. 사전 훈련 : 탐욕적 알고리즘 사용 (현재 상황에서 최선의 선택을 하는 알고리즘)

5. 연속법과 커리큘럼 학습 : 간단한 모형을 훈련 후 그 모형과 밀접한 관련이 있는 복잡한 모형을 훈련.

6. 문제 영역 고유의 통찰에 기초한 매개변수 공유 : 신경망을 서로 다른 부분의 매개변수 들을 같은 값으로 두어 문제영역에 관한 지식을 모형에 반영.

 

 

 

 

 

학습 알고리즘의 제곱 오차 세 가지

1. 편향(bias) : 실측치와 예측치 간 오차가 크게 벌어짐 (정답과 대체로 멀리 있음)

2. 분산(variance) : 예측치가 대체로 멀리 흩어져 있음

3. 잡음 : 본질적으로 존재하는 오류로 발생

 

평균 제곱 오차(mean-squared error, MSE) : 오차의 제곱에 대해 평균을 취함

즉 적을수록 실제 값과 오차가 적은 것

MSE를 편향, 분산, 잡음 세가지로 수식을 분해할 수 있다.