0. 딥러닝의 역사
1956년 스스로 학습하는 인공 신경망인 '퍼셉트론'이 등장했다. 퍼셉트론은 입력 데이터가 들어오면 가중치와 곱해서 가중 합산을 하며, 그 결과가 0보다 크면 1을 출력하고 그렇지 않으면 0을 출력한다. 가중 합산과 step function을 순차적으로 실행하는데, 이때 계단 함수가 퍼셉트론의 활성 여부를 결정하므로 이를 활성 함수(activation function)이라고 부른다.
퍼셉트론의 한계로 인해 다층 퍼셉트론의 필요성과 동시에 인공 신경망 연구의 침체기가 도달했다. 1974년 다층 퍼셈트론을 학습시킬 수 있는 '역전파 알고리즘'이 제안되었다. 이는 일반적인 그래프 형태의 네트워크에서 작동하며, 신경망의 뉴런에 분산된 파라미터의 미분을 효율적으로 계산하기 위한 알고리즘이다.
과적합(too much fitting)과 그레이디언트 소실 문제(깊은 신경망 학습 중 역전파 과정에서 미분값이 사라지는 현상)는 인공 신경망의 오랜 한계였다. 2006년 이 문제들을 해결하여 깊은 신경망을 안정적으로 학습시킬 수 있는 딥러닝 방법이 제시되었다. 각 계층을 사전 학습한 뒤, 한 계층씩 쌓아서 깊은 신경망을 이룬다.
-> 활성 함수는 인공 신경망의 활성 여부 및 출력을 결정한다.
-> 인공 신경망은 학습 과정에서 출력과 정답의 오차를 최소화하도록 최적화를 수행한다.
-> 신경망의 근본적인 목적은 입력과 출력 사이의 관계를 묘사하는 것이다.
1. 순방향 신경망
순방향 신경망은 인공 신경망의 가장 기본이 되는 형태이다. 다층 퍼셉트론이라고도 부른다. 같은 입력 데이터에서 뉴런마다 서로 다른 특징을 추출한다. 뉴런은 데이터에 내재된 특징을 추출하기 위해 가중 합산과 활성 함수를 순차적으로 실행한다. 가중 합산은 추출할 특징에 중요한 영향을 미치는 데이터를 선택하는 과정이고, 활성 함수는 원하는 형태로 특징을 추출하기 위해 데이터를 비선형적으로 변환하는 과정이다. 뉴런의 활성 함수는 데이터를 비선형 변환하여 원하는 형태의 특징을 추출할 수 있게 해준다.
y = f(x; θ) 란 입력 x를 출력 y로 매핑하는 파라미터 함수이며, θ는 함수의 파라미터다. 학습할 때 미분을 사용하므로 신경망이 표현하는 함수는 미분 가능한 함수여야 한다.
-> 각 신경의 입력 : 이전 층의 모든 신경의 출력들의 선형 조합과 편향(bias)의 합, 각 신경의 출력 : 입력을 활성화 함수(activation function)에 통과시킨 값, 가중치(weight) : 선형 조합에 사용되는 parameter ** 가중치와 편향은 각각 w, b로 표현한다.
순전파를 쉽게 말하자면, 데이터가 입력층에서부터 출력층까지 순서대로 전달되는 것을 의미한다. 출력층의 출력을 계산할 때 순전파 결과와 역전파에 사용할 기울기도 계산한다. 이처럼 가중치 수정에 필요한 계산값을 모두 저장하기 때문에 딥러닝은 메모리를 많이 사용한다.
2. 활성화 함수
인공신경망에서 활성화 함수의 역할은 데이터의 흐름을 결정짓는 게이트다. (신경을 닫힌 or 열린 게이트로 동작하게 함) 보통 한쪽 끝이 수렴하거나, 양쪽 끝이 서로 다른 기울기를 가지고 발산하는 형태다. sigmoid함수는 출력, 기울기가 모두 연속적이라는 점에서 연속 출력을 갖는 시스템에 대한 표현이 잘 이뤄진다.
지수 항을 갖고 있어 연산의 부담이 있고, 양쪽 끝의 기울기 값이 작기 때문에 경사하강법에만 의존할 경우 학습이 더디게 진행된다. 이를 그래디언트 소멸, Vanishing-Gradient problem이라 한다. 해결책으로 ReLU, leaky ReLU가 제시된다.
3. 경사하강법(Gradient Descent)
(1) 경사하강법
목표는 주어진 입출력 훈련 데이터셋에서 추정오차(손실함수)를 최소화할 w와 b를 찾는 것이다. 손실 함수에 대한 각 parameter의 영향을 조사하고, 그 크기와 학습 속도의 곱으로 para들을 갱신한다. 이러한 갱신 방법은 [최적점 주변으로 찾아가는 과정]은 빠르게, [정확한 최적점의 탐색]은 천천히 수행하게 한다.
(2) 오차 역전파
내용
4. 용어 정리
(1) ANN
[1] 인공 뉴런(퍼셉트론) : 입력값, 가중치, 편향을 이용해 출력값을 내는 수학적 모델. [2] 단층 인공 신경망 : 퍼십트론을 하나만 사용, 다층 인공 신경망 : 퍼셈트론을 여러 개 사용하는 인공 신경망. [3] 입력층 : 입력을 표현, 출력층 : 신경망의 출력을 계산, 은닉층 : 입력층 이후부터 출력층 전까지. 가중치 : 입력의 중요도, 편향 : 활성화 함수의 임곗값을 이동시키는 역할. [4] 활성화 함수 : 해당 뉴런의 출력을 다음 뉴런으로 넘길지를 결정, 시그모이드 함수는 뉴런의 출력값을 0과 1 사이로 고정한다. 입력값과 가중치를 곱해서 얻은 가중합이 활성화 함수의 입력이다. [5] 손실 함수 : 정답과 신경망의 예측의 차이를 나타내는 함수. [6] 경사 하강법 : 손실을 가중치에 대해 미분한 다음, 기울기의 반대 방향으로 학습률만큼 이동시키는 알고리즘. 경사의 반대 방향으로 계속 이동하며 최솟값에 이를 때까지 반복하는 학습 방법이다. [7] 오차 역전파 : 올바른 가중치를 찾기 위해 오차를 출력층으로부터 입력층까지 전파하는 방식.
[8] MSE(평균 제곱 오차)는 값의 차이의 제곱의 평균, CE(크로스 엔트로피)는 두 확률 분포의 차이를 나타낸다. 회귀는 MSE, 분류는 CE 손실을 사용한다. [9] 다중분류는 신경망의 입력을 여러 범주로 분류하는 알고리즘이다. [10] 피처는 신경망의 입력으로 들어오는 값으로 데이터가 갖고 있는 특징이다. [11] 배치는 데이터셋의 일부로 신경망의 입력으로 들어가는 단위, 에포크는 전체 데이터를 모두 한 번씩 사용했을 때의 단위다. 이터레이션은 하나의 에포크에 들어 있는 배치 수다. [12] 최적화 알고리즘은 역전파된 기울기를 이용해 가중치를 수정한다. Adam은 모멘텀과 RMSprop를 섞어놓은, 가장 흔하게 사용되는 최적화 알고리즘이다.
(2) CNN
[1] 합성곱은 작은 필터를 이용해 이미지로부터 특징을 뽑아내는 알고리즘이다. [2] CNN은 합성곱층을 반복적으로 쌓아 만든 인공 신경망이다. [3]
5. CNN. RNN
https://ufubbd.tistory.com/161
6. 인공 신경망 활용의 전체 흐름
인공 신경망의 활용에는 데이터 취득, 신경망 생성, 학습, 검증, 배포의 순서를 따른다. 데이터는 가능한 다양한 상황에서 고르게 취득하고, 신경망은 다양한 구조와 학습 알고리즘을 적용해 생성한다. 학습 곡선을 통해 모델의 복잡도와 데이터셋의 일반성을 검증한다.
[1] 과소 적합 : 모델이 갖는 자유도가 충분치 못해 주어진 데이터가 갖는 특징을 충분히 묘사하지 못한 경우. [2] 이상 적합 : 모델이 갖는 자유도가 적절히 주어진 데이터를 잘 묘사한 경우. [3] 과대 적합 : 모델이 갖는 자유도가 적절해 주어진 데이터를 너무 자세히 묘사해 일반성을 잃는 경우, 노이즈 성분까지도 묘사한다.
7. 인공 신경망의 일반성
인공 신경망이 일반성을 갖는지 확인하는 것은 중요하다. 훈련 데이터셋으로 과도하게 훈련된 인공 신경망은 새로운 데이터에 대해 (단순한 모델에 비해) 오히려 나쁜 성능을 보일 수도 있다. 검증 데이터셋을 별도로 두고 훈련에 사용하지 않으며, 검증 데이터셋에 대한 추정 오차를 훈련 시 관찰해야 한다. [검증 데이터셋에 대한 추정 오차]가 [훈련 데이터셋에 대한 오차]와 유사한 크기, 개형으로 감소했다면 훈련이 적절하게, 일반성을 갖도록 이루어진 것이다.
'LAB > AI' 카테고리의 다른 글
딥러닝(3) 파이썬, 텐서플로 : 코드 위주 (0) | 2024.01.17 |
---|---|
딥러닝(1) 인공지능의 분류, 지도 학습 구현 기법 (2) | 2024.01.17 |
딥러닝(6) 실습: RNN image classification 코드 (0) | 2023.09.07 |
딥러닝(5) 실습: LSTM 코드 (0) | 2023.09.04 |
딥러닝(4) ANN, DNN, CNN, RNN 개념과 차이 (0) | 2023.08.18 |