
1. ANN, Artificial Neural Network (인공 신경망)
사람의 신경망 원리와 구조를 가지고와서 만든 학습 알고리즘이다.
작은 단위의 노드들이 층으로 연결되어있고 입력을 받아서 출력으로 전환한다.
각 뉴런은 입력값을 받아서 입력값에 가중치(w) 곱해서 모두 더하고 편향(b)을 더한뒤 출력을 낸다. 이를 식으로 나타내면 아래와 같다.

위 식을 조금 더 있어빌리티(?) 하게 정리하면 이렇게 된다.

가중치란 말 그대로 해당 입력을 얼마나 중요하게 볼지를 의미하고, f(..) 함수가 '비선형성'을 담당한다. 여기서는 관계를 학습하게 해준다 정도로 보면 될것 같다.
기본 구조는 세 부분으로 보면된다. 데이터를 받는 입력층, 데이터를 가공하는 은닉층, 그리고 결과가 나오는 출력층이다.

입력층에서 시작해서 받고 은닉층을 거쳐서 출력을 뽑는 것을 '순전파', 그리고 예측한 값과 실제값을 비교해서 얼마나 다른지를 계산한다. 이를 '손실계산', 그리고 이 손실을 줄이기 위해서 출력층에서 부터 입력층으로 계산하는것 '역전파' 라고한다. 이렇게 순전파에서 부터 손실계산하고 역전파 하는 하나의 싸이클을 반복학습이고, 이 반복학습을 통해서 가중치(w)를 조금씩 고쳐나가면서 정답에 다가가는 것이다.
2. DNN, Deep Nueral Networks (심층 신경망)
말 그대로 조금더 딥하게 진행하는 것이다. ANN에 비해서 은닉층이 더 두터워진것을 확인할 수 있다. 여기서의 딥(Deep)이 딥러닝의 어원이라고 한다.
이렇게 깊게 들어갈 수록 단계적으로 학습을 하는것으로 보면된다. 예를들어 첫번째 층에서는 선, 모서리 같은 패턴을 잡고 두 번째 층에서는 눈, 코, 입 같은 부분들의 패턴을 잡으면서 더 뒤로가면서 그것들을 조합해서 '얼굴'을 만들어내는 것이다. ANN 에서는 하기 어려운 복잡한 패턴들을 이러한 단계들을 통해서 확인할 수 있게 되는 것이다.

이런 DNN에 단점이 있다.
우선은 계산 비용이다. 여기서야 은닉층이 3개에, 4개의 노드들 정도로 이루어져있지만 이런 층들이 많아지면 계산 비용이 증가하기 마련이다. 그리고 층이 깊어질수록 앞쪽 층 학습이 어렵다는 단점도 있다. 그리고 과적합 위험도 있는데 이는 훈련데이터에만 너무 학습이 되어버려서 실제 데이터 분석에 이슈가 생기는 것을 의미한다.