최근에 인공지능 강의와 실습을 통해 Neural Network에 대해 배우고 CNN과 Transformer에 대해 간략하게 배우게 됐다.
배운걸 조금 정리해놓고 싶어서 포스트를 작성해보려 한다.
일기 쓰는 것도 초등학교 후로 손을 놓아버린 나지만.... 아무튼 이제 시작해보자!
뜻
[Neural] - 신경/신경의
[Network] - 네트워크/연결
사전적인 의미로는 신경들의 연결. 인체에도 비슷한 구조가 이미 있고, 고등학교 때 생물을 배웠다면 감이 오지. 인체의 신경계!
사실 Neural Network 자체가 인체의 신경망인 두뇌를 인공적으로 구현하는 시도에서 시작되었기 때문에, 구조적으로 신경세포가 작동하는 원리와 상당히 비슷함.
구조
뜻을 알았으니 이제 구조를 보자. 모티브가 된 인체의 신경계부터 알아보자면 아래 그림과 같다.
위 그림이 신경세포 하나를 나타낸 것이고, 이것들이 엄청나게 연결된게 우리 몸에 있는 신경계임.
이걸 컴퓨터에 맞게 표현하면 뉴런은 퍼셉트론이 되고, 신경계는 Neural Net이 되는거.
Neuron -> Perceptron(Node)
Nervous system -> Neural Network
동작
뉴런은 간단히 말하면 흡수/배출의 동작을 반복한다고 보면 됨.
입력되는 물질들을 흡수하다가, 임계지점에 도달하면 부왘 배출하는거.
이 과정이 똑같이 퍼셉트론에도 구현돼있다.
이 사진에서 왼쪽 [single-layer perceptron]이라고 적힌곳이 바로 퍼셉트론의 구조다.
x1, x2, x3에 가중치 w1, w2, w3을 곱해서 전부 더하고, 어떤 함수를 통과시켜 출력을 내는 것이 퍼셉트론이고, 그 퍼셉트론을 엄청나게 많이 연결한게 Neural Net, Multi-layer perceptron이다.
퍼셉트론에서 출력이 되기 전에 어떤 함수를 통과시킨다고 했는데, 그게 바로 Activation Function이다.
Activation Function으로는 비선형 함수인 ReLU를 사용하는데, 이유는 학습을 시키기 위함이라고 간단하게 생각하면 된다.
무식하게 퍼셉트론을 layer로 정렬해서 엄청나게 연결했다고 치자.
그래서 뭘 할 수 있을까?
퍼셉트론의 출력은 ReLU를 사용하기 전에는 0/1이었고(사실 ReLU를 쓰면된다는 사실을 알아내기까지 엄청 오래 걸렸다.), 이건 트랜지스터의 출력값과 같지.
결국 NN으로는 컴퓨터가 할 수 있는 모든걸 할 수 있었던거임.
근데....그러면 컴퓨터 쓰면 되지 왜 NN을 씀? 라고 하면 엄청나게 큰 차이점이 하나 있다.
갑자기 NN의 프로그램이 무슨 말이냐 하면.... 아까 퍼셉트론이 x랑 w값을 곱해서 출력을 낸다 했는데, 이 w값을 아주 잘 적당히 조절만 되면, 우리가 원하는 결과를 출력하는 NN이 만들어진다 이거임.
그래서 w값들을 조절해서 AND, OR, NOT 연산을 퍼셉트론으로 처리가 가능하고, 퍼셉트론을 좀 연결해서 w값을 잘 조절하면 XOR연산까지 가능하다.
AND OR NOT XOR 연산하는 부분은 다른 포스트를 찾아보는게 설명이 더 자세하게 되어있다.
아무튼 개쩌는 이론이네! 하고 이제 어케 w를 조절하면 되나요? 했을때,
그건 사람이 직접 해줘야해
라고 결론이 나왔기 때문에, 이론이 등장한 1960년 후로는 NN이 잠잠했던거다.
하지만 시간이 지나 NN이 스스로 w를 조절할 수 있도록 만드는 방법이 나왔는데...!
그 방법과 설명은 다음 포스트에서 다루도록 하지