일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- javascript
- javacript
- GAN 이해
- 앱 구조
- 인공지능 학회
- Voltage Drop
- Autumation Tools
- few-shot
- python
- 생성AI
- Django
- 인프런
- 장고
- 표본 공간
- multi-label
- catastrophic forgetting
- 설계철학
- fine grained
- 확률 변수
- zero-shot
- 생산적 적대 신경망
- Power Loss
- application structure
- 자바스크립트
- for-of
- 모드 붕괴
- GAN 손실함수
- stability-plasticity trade-off
- 이중구조분해할당
- 훈훈한 Javascript
- Today
- Total
점점 미쳐가는 개발 일기
[DL] 인공신경망? 심층신경망? 본문
인공신경망(Aritificial Neural Network, ANN)
과거, 인류는 생각하는 기계를 만들고자 다양한 방법을 고안했고 인간의 뇌를 모방하여 생각하는 기계를 만들고자 했습니다. 인간의 뇌는 뉴런(neuron)이라고 불리는 세포들의 집합체입니다. 뉴런의 동작 원리는 수상돌기(dendrite)에서 다른 뉴런으로부터 전달 받은 신호를 받고 이 신호를 신경세포체(soam, or cell body)에서 합산한 후 축삭돌기(axon))를 통해 다른 뉴런으로 신호를 전달합니다. 신경망은 신경계의 기본 단위인 뉴런을 모델화한 것 입니다.
뉴런의 모델화 과정
① 뉴런에 연결되어 있는 여러 시냅스(synabse, 뉴런 사이의 틈)를 통해 신호를 받는다. 이 때 신호는 화학물질의 양(x)과 분비되는 시간(w)의 곱으로 나타낼 수 있다.
② 여러 개의 시냅스로부터 받은 신호를 신경세포체에서 합친 후 축삭돌기로 보낸다.
③ 축삭돌기를 지나면서 신호가 약해지기도, 강해지기도 한다.(b)
④ 축삭말단에서 일정한 수치(f(x), 활성화 함수)를 넘기면 신호를 다음 시냅스로 전달한다.
이 과정을 식으로 표현하면 아래와 같습니다.
선형회귀식과 유사하게 보이지만 차이가 존재하는데, 바로 활성화 함수(activation function)의 유무입니다. 인공신경망은 활성화 함수에 의해 회귀와 분류 모두 수행 가능합니다.
단층 퍼셉트론(Single-Layer Perceptron)
신경망에서 하나의 입력(xi)을 노드라고 각각의 노드에 대한 가중치(wi)의 곱이 합해져서 다음 노드로 갑니다. 이 때 신경망에서 여러 입력들을(x1, x2, …,xi) 하나의 층이라고 하며 입력층과 출력층으로만 구성된 신경망을 단층 퍼셉트론이라고 합니다.
단층 퍼셉트론이 나오고 가장 먼저 수행한 작업은 논리 연산입니다. 단층 퍼셉트론은 논리곱(AND), 논리합(OR) 연산에 대해서 분류를 잘 하였지만 베타적 논리합(XOR) 문제는 해결할 수 없었습니다. 이후 입력층과 출력층 사이에 숨은층(hidden layer)을 넣어 다층구조의 퍼셉트론(multi-layer perceptron, MLP)을 제안했고 베타적 논리합 문제를 해결할 수 있었습니다.
그러나 베타적 논리합과 같은 간단한 문제는 2차원 공간에서 해결할 수 있는 문제지만, 현실세계를 대변하는 다차원 공간의 일반적인 문제들은 간단하지 않았습니다.
역전파 알고리즘(Backpropagation Algorithm)
1986년, Geoffrey Hinton 교수에 의해 1974년에 제안되었던 역전파 알고리즘이 다층구조의 퍼셉트론을 학습시킬 수 있다는 것이 증명되면서 신경망 분야가 다시 활성화되었습니다. 역전파 알고리즘은 신경망 모델이 손실함수를 통해 예측한 값과 실제값의 차이를 계산한 후에 오차 값을 최적화(optimizer) 과정을 거쳐 다시 출력층에서 입력층까지 미분의 연쇄법칙(chain rule, 체인 규칙)에 의해 파라미터를 갱신하는 알고리즘입니다.
손실함수(Loss Function)
모델의 예측값과 실제값의 차이를 계산하는 함수
• 회귀모델의 손실함수 : MSE(mean square error), MAE(mean absolute error) 등
- Mean Square Error
- Mean Absolute Error
• 분류모델의 손실함수 : Binary Cross Entropy, Categorical Cross Entropy 등
- Binary Cross Entropy
- Categorical Cross Entropy
최적화(Optimizer)
손실함수를 최소화하는 파라미터를 구하는 과정
신경망 모델에서의 파라미터는 가중치를 말합니다. 손실함수의 모든 오차 합에 학습률을 곱하여 가중치를 갱신하며 이러한 가중치를 업데이트하는 방법의 가장 초기 방법은 경사하강법(Gradient Descent)입니다. 경사하강법은 가중치를 갱신하기 위해 전체 데이터셋의 오차 합을 통해 가중치를 갱신하였는데, 이러한 방법은 비용이 많이 들기 때문에 경사하강법을 개선한 다양한 최적화 방법들이 있습니다. 개선된 대표적인 최적화 방법은 SGD, Adagrad, Momentum, RMSProp, Adam 등이 있습니다.
인공신경망 학습 과정 정리
인공신경망의 학습과정을 위 그림과 같이 정리할 수 있습니다. 먼저 학습데이터의 입력 데이터를 정의한 신경망 모델에 입력하면 신경망 모델을 통해 모델의 예측값이 출력됩니다. 모델의 예측값과 학습데이터의 출력 데이터(정답 데이터)를 손실함수를 통해 오차값을 계산하고 최적화 기법을 통해 출력층부터 입력층까지의 모델의 파라미터를 갱신합니다. 이 한 번의 과정을 1 epoch이며 epoch를 반복하여 최적의 신경망 모델을 도출합니다.
그래서 ANN, DNN(Deep Neural Network)이 뭐지?
인공신경망은 모든 신경망을 포괄하는 개념이며 심층신경망(DNN)은 은닉층과 출력층의 합이 두 개 이상인 신경망입니다. 은닉층이 1개라도 존재한다면 심층신경망이라 부르며 MLP가 DNN의 한 예시이고 아래의 그림 모두 DNN의 예시입니다. 또한 CNN(Convolutional Neural Networks), RNN(Recurrent Neural Network)도 DNN의 예시가 됩니다.