인공지능 in 네부캠 AI 4기/딥러닝 기본

Neural Networks & Multi-Layer Perceptron

제로타이 2022. 10. 3. 13:38

딥러닝, 뉴럴 네트워크가 뭘까? 학습 단계가 어찌 되는가?

Neural Network

뉴럴 네트워크는 생체 뇌신경망을 모방한 컴퓨터 시스템이라는 것이 기본적인 정의이다. 그런데 사실 구조가 어느 정도는 비슷할 수 있지만 신경망이라는 아이디어를 모방한 것일 뿐, 세부적인 내용에서는 큰 차이가 있다. 인류가 최초로 발명한 비행 모델이 새를 모방했지만, 지금의 비행기는 새와 닮은 점보다는 다른 점이 훨씬 더 많듯이. 
비선형 연산이 반복적으로 이뤄지는 함수를 근사하는 모델이란 표현이 뉴럴 네트워크를 표현하는 더 좋은 정의일지도 모른다. 작동 방식을 통한 정의!

이제 방식을 이해해보자. 우리가 이러한 네트워크를 통해 해결하려는 문제 중 가장 간단한 문제는 선형 문제라 할 수 있다. W(가중치)와 b(편향)를 찾는 문제. 선형 회귀를 풀 때는 대체로 오차 제곱을 이용해 값을 조금씩 업데이트해나가는 경사하강법을 사용한다.

$\Large y = W^Tx + b$

근데 문제는 이정도로만 간단하지 않다. 우리가 풀고자하는 문제는 단순하게 선형으로 나타내기 어려울 수도 있고, 도출되는 값이 하나만이 아닐 수도 있다. 세상은 선형이 아니다!
그래서 딥러닝은 층을 더 깊게 쌓는다. 위의 식으로 따지자면 W를 더 많이 곱해주는 것이다. 그런데 그냥 곱해주는 것은 의미가 없다. 왜냐하면 선형된 식의 결합은 결국 조금 더 정교해진 하나의 식으로 대체되기 때문이다. 즉 x 앞에 W를 제 아무리 곱해봐야, 결국 그 W들을 곱한 행렬 하나도 대체가 된다는 것이다. 그래서 이를 비선형으로 꼬아주는, 활성함수activation function가 필요하다. 이러한 방법을 통해서 신경망은 더 많은 표현력을 갖추게 된다. 

잘 쓰이는 활성함수

히든레이어가 하나 있는 신경망으로도 모든 것을 표현할 수 있다는 연구가 있다. 이론적으로 맞지만, 사실 이건 존재성만 보장하는 것이라 히든 레이어가 있다고 해서 무조건 표현력이 좋다는 뜻은 아니다.

Multi-Layer Perceptron

다층 구조를 말한다. 정확하게 퍼셉트론은 (이전에 내가 밑러닝을 읽었던 기억에 따르면) 논리 그래프를 말하는데, 그것을 다층으로 쌓은 것을 말한다는 것이다.

간략한 구조

손실함수도 잠시 보자. 손실 함수는 해당 문제가 무엇인가에 따라 맞춰 선택하여 모델의 성능에 기여할 수 있다.

손실 함수의 종류

회귀 문제에서 우리는 함수 하나를 그리는 일을 하게 된다. 이때 가장 간단한 것이 바로 내 함수의 출력값과 데이터셋의 오차를 최소화시키는 것. 이때 Mean Squared Error는 이를 제곱하고 양수로 만들고 나눈다.
가장 간단하지만, MSE가 항상 도움이 되는 것은 아닐 수 있다. 근데 사실 제곱이어야 하는 이유는 없다. 오히려 제곱 때문에 네트워크 구조가 망가지는 문제가 발생하는 경우도 있다고(정확히 어떤 상황일까).

분류 문제에서는? Cross Entropy가 대세. 분류에서는 정답이 원핫벡터로 표현된다. 그래서 로그를 취해 내 예측값을 곱한다는 건 내가 원하는 정답에 해당하는 값만 주목하겠다는 목적을 반영하게 된다. 해당 출력값만 높이는 것. 어차피 개, 고양이, 쥐 정도의 정답 범주가 있는 상태에서 개 사진이 주어졌을 때 그게 개일 확률만 다른 것들보다 높다고 우리 모델이 답한다면 우리 모델은 분류 문제를 잘 해결한 것이다. 그래서 크로스 엔트로피가 쓰인다.

확률 문제. 그럼 내 출력값이 확률적 문제라면? 만약 사람의 얼굴을 보고 나이를 맞추고 싶다. 이때 딱 몇 살이다라고 내리기보다는 30대일 확률은 얼마고, 20대일 확률은 얼마쯤 된다, 이런 식의 애매한 확률을 보고 싶은 것이다. 이럴때는 최대가능도 추정, Maximum Likelihood Estimation이 쓰인다.

 

 

  • Regression Task와 Classification Task의 loss function이 다른 이유는 무엇인가요?

회귀 문제는 예측하고자 하는 값이 연속하는 실수인 경우를 말한다. 반면 분류 문제는 타겟값이 범주형 변수일 때를 말한다. 여기에서 우리는 어느 범주에 속할 확률이 높은지를 따지면서 그 확률 자체만을 높이면 된다. 그래서 원핫벡터로 표현된 정답지에서 정답에 해당하는 내 예측값만 올려주는 것이다. 왜 로그를 취할까? 대체로 분류 문제는 확률로 표현하기 때문에 값이 0부터 1사이로 들어오는데, 그 값의 표현을 풍부하게 해주기 위해서 로그를 취한다. 그리고 음수를 곱해서 나오는 값이 양수가 되게 만들고.

  • Regression Task, Classification Task, Probabilistic Task의 Loss 함수(or 클래스)는 Pytorch에서 어떻게 구현이 되어있을까요?

torch.nn — PyTorch 1.12 documentation

 

torch.nn — PyTorch 1.12 documentation

Shortcuts

pytorch.org

 

 

'인공지능 in 네부캠 AI 4기 > 딥러닝 기본' 카테고리의 다른 글

Computer Vision Applications  (0) 2022.10.04
Modern Convolutional Neural Networks  (0) 2022.10.04
Convolutional Neural Networks  (0) 2022.10.04
Optimization  (0) 2022.10.03
Historical Review  (0) 2022.10.03