인공 신경망
인간의 생물학적 신경망과 유사한 구조를 갖는 인공 시스템. 딥러닝 구조의 핵심.
1) 퍼셉트론 : 뉴런의 원리를 본떠 만든 인공 구조
- 단층 퍼셉트론 : 입력층이 은닉층을 거치지 않고 바로 출력층과 연결
- 다층 퍼셉트론
: 입력층과 출력층 사이에 보이지 않는 다수의 은닉층
: 은닉층의 노드가 너무 적으면 복잡한 의사결정 경계를 구축할 수 없음. 과소적합 문제 발생
: 은닉층이 너무 많으면 일반화가 어려워 과적합 문제 발생
2) 활성화 함수 : 입력값을 어떤 값으로 변환해 출력할지 결정하는 함수
* Step 함수 : 0 또는 1 반환
* Sigmoid 함수 : 로지스틱 회귀분석의 확률값을 구하기 위한 식과 유사. 0과 1 사이의 값 반환
* Sign 함수 : 기본적인 활성함수. -1 또는 1 반환
* tanh 함수 : 확장된 형태의 시그모이드 함수, 중심값 0, -1 ~ 1 사이의 값 반환
* ReLU 함수 : 딥러닝에서 가장 믾이 사용되는 함수. 입력값과 0 중에서 큰 값을 선택
* Softmax 함수 : 표준화지수 함수, 출력값이 다밤주인 경우에 사용. 각 범주에 속할 확률값을 반환
3) 경사 하강법 (Gradient descent)
신경망 훈련의 목표는 최적 파라미터를 찾는 것.
파라미터 : 가중치와 편향을 의미 / 최적 파라미터는 손실 함수가 최솟값일 때의 파라미터
매 훈련 단계마다 손실값이 줄어드는 방향으로 파라미터를 갱신하며 최적의 파리미터 탐색
* 손실함수 : 모델 성능이 얼마나 나쁜지를 측정하는 함수
대표적인 손실함수에는 평균 제곱 오차, 교차 엔트로피가 있음
* 경사 하강법 : 함수 기울기를 낮은 쪽으로 계속 이동시켜 극값에 이를때까지 반복시키는 것
비용함수(cost function)을 최소화 하기 위해 parameter를 반복적으로 조정하는 과정
1) 임의의 parameter값으로 시작
2) Cost Function 계산, cost function - 모델을 구성하는 가중치 w의 함수, 시작점에서 곡선의 기울기 계산
3) parameter 값 갱신 : W = W - learning rate * 기울기 미분값
4) n번의 iteration, 최소값을 향해 수렴함. learning rate가 적절해야함
※ 학습률( learning rate ): 기술기 방향으로 얼마만큼 이동할기 결정하는 값
* 확률적 경사 하강법 : 전체 학습 데이터에서 개별 데이터를 무작위로 뽑아 경사 하강법을 수행하는 알고리즘
* 미니배치 경사 하강법 : 미니배치 단위로 무작위 추출해 경사 하강법을 수행. 신경망 모델을 훈련하는 주요 알고리즘
미니배치란 여러 데이터의 묶음을 뜻함. 데이터를 하나씩 훈력하기보다는 여러 개를 한 묶음으로 처리하는게 더 효율적.
4) 순전파와 역전파
* 순전파 : 신경망에서 입력값이 입력층과 은닉층을 거쳐 출력층에 도달하기까지의 계산 과정. 각 층을 통과할 때마다 입력값에 가중치를 곱해 다음 층으로 출력할 값을 계산함.
* 역전파 : 순전파의 반대 개념. 오차를 줄이고자 출력층에서 입력층으로 거꾸로 찾아 나가는 역전파 알고리즘을 활용.
합성곱 신경망(CNN)
컴퓨터 비전 분야에서 주로 쓰이는 신경망
1) 합성곱 계층
합성곱으로 이루어진 신경망 계층
※ 합성곱 : 2차원 데이터의 일정 영역 내 값들을 하나의 값으로 압축하는 연산. 전체 영역에서 중요한 특징만 추출하는 효
합성곱 연사에는 필터 필요. 필터는 입력 데이터에서 특정한 특징을 필터링하는 역할
합성곱 연산으로 얻은 결과를 특성 맵 또는 피처 맵이라고 함
2) 패딩과 스트라이드
합성곱 연산은 데이터의 크기를 줄이기 때문에 여러 번 반복하면 더 이상 합성곱 연산을 적용하지 못함
이런 상황을 막으려면 출력되는 특성 맵과 입력 데이터의 크기를 동일하기 유지하면 됨.
이를 위해 입력 데이터 주변을 특정 값으로 채우는 것을 패딩이라고 함. 보통 입력 데이터 주변을 0으로 채움
합성곱 연산을 수행할 때, 필터는 입력 데이터의 왼쪽에서 오른쪽으로, 위에서 아래로 한 칸씩 이동하며 연산함
이때 한 번에 이동하는 간격을 스트라이드라고 함
3) 풀링
풀링은 특성 맵 크기를 줄여 이미지의 요약 정보를 추출하는 기능을 함
풀링은 필터가 필요 없음. 특정 영역에서 최댓값이나 평균값을 가져와 요약 정보를 구하기 때문
최대 풀링은 풀링 영역에서 가장 큰 값을 취하는 방법이고, 평균 풀링은 풀링 영역의 평균값을 구하는 방법
최대 풀링은 특정 영역에서 가장 뚜렷한(밝은) 부분을 추출하고, 평균 풀링은 특정 영역의 평균적인 특징을 추출함
풀링의 목적
- 특성 맵 크기를 줄여 연산 속도를 빠르게 하기 위해
- 이미지에서 물체의 위치를 바뀌어도 같은 물체로 인식하기 위해 : 위치 불변성
※ 합성곱 연산은 물체 위치가 바뀌면 같은 물체로 인식하지 못함
4) 전결합
이전 계층의 모든 노드 각각이 다음 계층의 노드 전부와 연결된 결합
전겨합으로 구성된 계층을 전결합 계층 또는 밀집 계층이라고 함
CNN에서 전결합 계층을 보통 마지막 부분에 구현. 앞의 합성곱과 풀링 계층이 이미지에서 특성을 뽑아내면 전결합 계층은 이 특성을 활용해 특정한 레이블로 분류하는 역할을 함
합성곱 계층과 풀링 계층을 거친 2차원 데이터는 1차원으로 바뀐 뒤 전 결합을 적용할 수 있음.
이렇듯 다차원 데이터를 1차원 데이터로 바꾸는 작업을 평탄화라고 함
성능 향상을 위한 딥러닝 알고리즘
1) 드롭아웃
과대적합을 방지하기 위해 신경망 훈련 과정에서 무작위로 일부 뉴런을 제외하는 기법
드롭아웃음 매 훈련 이터레이션마다 새롭게 적용. 즉 매번 신경망의 뉴런 조합이 달라지므로 훈련 이터레이션마다 서로 다른 신경망을 훈련하는 것. 서로 다른 신경망을 훈련해 결과를 취합하는 기법인 앙상블 학습과 유사
얼마나 많은 뉴런을 드롭아웃할지는 하이파라미터로 설정. 드롭아웃 비율을 0.2로 설정하면 전체 뉴런의 20%를 제외함
드롭아앗은 훈련 단계에서만 적용. 검증이나 예측 단계에서는 훈련된 뉴런을 모두 사용해야 하기 때문에 적용하지 않음
2) 배치 정규화
과대적합 방지와 훈련 속도 향상을 위한 기법. 내부 공변량 변화 현상을 해결하기 위한 기법.
※ 내부 공변량 변화 : 신경망 계층마다 입력 데이터 분포가 다른 현상을 의미.
신경망 계층마다 입력 데이터 분포가 다르면 훈련 속도가 느려짐. so 계층 간 데이터 분포의 편차를 줄이는 작업이 필요한데 이를 배치 정규화라고 함.
3) 옵티마이저
신경망 최적 가중치를 찾아주는 알고리즘. 확률적 경사 하강법의 대표적인 예임.
* 모멘텀 : 확률적 경사 하강법에 물리학의 관성 개념을 추가한 옵티마이저.
이전 단계의 진행 방향을 기억해 일정 비율로 현 단계에 반영하므로 지그재그가 줄어드는 효과가 있음
* Adagrad : 최적 파라미터에 도달할수록 학습률을 낮추도록 한 옵티마이저
최적점에서 멀 때는 학습률을 크게 잡아 빠르게 수렴하도록하고, 최적점에 가까워졌을 때는 학습률을 낮춰 최적점을 지나치지 않도록 하는 방법. 이런 학습률을 적응적 학습률이라고 함.
Adagrad는 개별 파라미터에 적응하며 학습률을 갱신하는 옵티마이저임.
* RMSProp : Adagrad의 단점을 보완한 방법
Adagrad는 훈련을 진행할수록 학습률이 작아져서, 오래 지속하면 결국 0에 가까워짐.
모델 가충치가 거의 갱신되지 않는다는 뜻. Adagrad는 훈련 시작 단계부터 기울기를 누적해 학습률을 낮추지만, RMSProp은 최근 기울기만 고려해 학습률을 낮춤. 그래서 훈련을 오래 지속해도 학습률이 0에 수렴하지 않는다 .
*Adam : 딥러닝 모델을 설계할 때 가장 많이 사용하는 옵티마이저. 모멘텀과 RMSProp의 장점을 결합한 방법.
모멘텀처럼 관성을 이용하면서 RMSProp처럼 적응적 학습률을 적용. 캐글에서 기본적으로 Adam을 많이 사용함
4) 전이 학습
한 영역에서 사전 훈련된 모델에 약간의 추가 학습을 더해 유사한 다른 영역에도 활용하는 기법.
처음부터 훈련하는 것보다 적은 데이터로 훨씬 빠르게 높은 성능치에 도달할 수 있다.
전이 학습 방법은 사전 훈련 모델을 구성하는 신경망 전체를 다시 훈련할지(파인튠닝), 일부 계층만 다시 훈련할지에 따라 두 가지로 나뉜다. #