*한국항공대학교 정재훈 교수님 강의를 참고하여 작성했습니다.
자 오늘부터 딥러닝 총 정리를 해볼건데요?
놀라운 사실 하나는 이 결심을 한 바로 오늘이 시험 3일전이라는 사실입니다.
그치만 뭐... 해봐야겠죠?
아무튼 달려봅시당. 화이팅~!
제일 먼저 분류에 대해 알아봅시다.
< 분류 - Classification >
분류란, 데이터를 레이블링 하는 작업
왜 레이블링 해야할까요?
컴퓨터는 0과 1로 이루어져있기에 무언가를 구분하는 방법도 0과 1에 차이를 주는 방법 뿐이기 때문입니다.
분류에 대한 예시를 들자면, 강아지는 (1, 0)이라는 레이블을 가지고, 고양이는 (0, 1)이라는 레이블을 가진다고 해봅시다.
강아지 이미지 하나가 들어왔을때 함수를 거쳐 이 이미지에게 (1, 0)이라는 레이블링을 했다면 올바르게 분류를 한 것입니다.
물론 실제 데이터의 정답 레이블과 함수를 거쳐 나온 레이블이 서로 일치하지 않을 수 있습니다.
여기서 정확도(accuracy)란,
분류 작업을 한 여러 샘플들을 보고 그 중 몇 퍼센트가 정답을 맞췄는지의 비율을 따진 것입니다.
나중에 나올 이야기지만 정확도로 학습이 될까요?
아쉽게도 정확도는 함수가 아니기에 미분이 안되고, 미분을 못해서 학습이 안됩니다.
< 인공신경망 - Artificial Neurons >
인공신경망이란, 인간 두뇌의 신경세포인 뉴런들이 연결된 형태를 모방한 것
먼저, 뉴런은 어떤 형태이며 어떤 작업을 할까요?

1. 왼쪽에 보라색 산호초 같이 생긴 것을 통해 정보가 들어오고,
2. 들어온 정보들을 합하고
3. 역치(Thrashold)를 넘는다면 노랑 관을 통과해 보라로 이동하고
4. 오른쪽 보라에서 다른 뉴런들로 전달이 됩니다.
이러한 메커니즘을 모방하여 인공 뉴런(Artifical Neuron)을 먼저 만듭니다.

왼쪽에서 들어온 값들을 다 더하여 역치를 넘을 경우 합 값을 다른 뉴런들에게 전송하고,
넘지 못한 경우 0을 다른 뉴런들에게 전송합니다.
이것으로 뉴런은 이진원소이며, on/off 상태를 갖는다고 보시면 됩니다. (McCulloch, Pitts가 제안한 인공신경망의 형태)
이제 이러한 인공 뉴런들이 여러가 연결된 형태가 바로 인공신경망입니다.
인공신경망에서 뉴런들은 시냅스(synapse)로 연결되어 있으며, 이 시냅스에서 정보가 저장되고 가중치(기호로는 W)가 곱해집니다.
시냅스가 하나의 인공 신경과 다수의 인공신경망 간의 차이를 만들어내는 중요한 요소입니다.

자 어디 한 번 계산을 해볼까요??
왼쪽 위부터 반시계방향으로 1~4번 뉴런이라고 해봅시다.
1번 뉴런
1. 5, 8이 들어와서 합치면 13
2. 역치인 12보다 크기에 13으로 전송
3. 4번 뉴런에는 가중치 3을 곱한 39로 전송, 3번 뉴런에는 가중치 2를 곱한 26 전송
2번 뉴런
1. 2, 4 받고 더해서 6
2. 역치 7 못넘어서 0으로 전송
3. 가중치 고려하여도 3, 4번 뉴런에 0으로 전송
이제 1, 2번 뉴런에서 전송해준 값들로 3, 4번 뉴런 계산해보면 됩니다.
귀찮으니 스킵할게요.
< 인공신경망 학습 >
여기다 위 인공신경망에 x1: (-2, 5), y1: (1, 0) 이렇게 값을 지정하고 분류 작업을 할 수 있습니다.
그러나, 출력값 f(x1)과 y1이 얼마나 가까운지를 판단해야 하는데 Scale이 맞지 않죠.
그렇기에 우리는 레이블같은 출력값을 얻어내야 합니다.
이를 해결하기 위해 사용할 함수가
Softmax 함수와 Cross Entropy 함수입니다.
Softmax: 출력값들을 0~1 사이의 값으로 정규화하고, 출력값들의 총합은 1이 되도록 하는 함수

softmax 함수는 신경망의 마지막 출력층에서 사용되며, 출력 벡터를 확률분포로 변환합니다.
이 함수를 사용하여 scale이 다르다는 문제를 해결할 수 있습니다.
Cross Entropy: 예측한 확률 분포와 실제 정답 분포 사이의 차이(오차)를 측정하는 손실 함수

p는 softmax한 값, q는 레이블 값을 넣습니다.
이때, p와 q가 동일하다면 0, 전혀 다르다면 inf(무한대)가 나오므로써 두 값이 얼마나 차이나는지 알 수 있습니다.
기본적인 인공신경망과 방금 나온 두 함수를 사용하여 입력값에 따른 출력값과 레이블 값의 차이를 알 수 있습니다.
그 차이는 손실함수(loss function)이라 부르며 이것을 최소화하기 위해 가중치 값 조정하는 것이 인공신경망의 학습입니다.
이제 1주차 분량인데.. 정신차려보니 벌써 2시네요..ㅠ
다음엔 loss를 줄이기 위해 꼭 알아야하는 Gradient 정리로 시작해보겠습니다.
그럼 이만~