본문 바로가기

인공지능/이론

(16) 인공 신경망

이제부터는 딥러닝에 대해서 알아보도록 하겠습니다.

 

이번 글에서는 딥러닝에 대한 기초에 대해서 알아볼 것입니다.

 

퍼셉트론은 아주 간단한 인공 신경망 구조입니다. 입력층출력층만 존재하여 두개의 층으로 이루어져 있습니다.

퍼셉트론은 각 노드가 그 다음 노드에 전부 연결되어 있는 밀집층입니다.

 

각 노드에서 다음 노드로 wx + b의 값을 넘겨줍니다. 여기서 x는 입력층에 들어온 값들의 행렬이고, w는 가중치 행렬입니다. b는 편향 특성입니다.

 

그리고 출력층에서는 활성화 함수(퍼셉트론에서는 계단함수입니다.)를 거쳐 최종 결과를 도출해냅니다.

 

인공신경망은 초창기 때 지금처럼의 인기를 얻을 수 없었습니다. 그에 따른 이유도 있었겠지요.

두개의 층으로만 이루어진 인공신경망으로는 그 당시 다른 머신러닝들의 성능에 비하면 좋지 못했기 때문입니다.

 

그렇게 나온 아이디어가 바로 다층 퍼셉트론(MLP) 입니다. 다층 퍼셉트론은 유추할 수 있듯이, 입력층과 출력층 사이에 은닉층이 여러개 존재하는 것입니다.

각 노드는 대부분 활성화함수를 가지고 있습니다.

 

다층 퍼셉트론은 출력층에서 오차를 구하고, backpropagation이라는 역전파 과정을 거쳐 가중치들을 업데이트합니다.

출력층에서 구한 오차를 chain rule을 이용하여 더 빠르게 각 노드의 오차 기여도를 측정하고, 가중치를 업데이트하는 것이 효율적입니다. (경사하강법으로 가중치를 업데이트합니다, 더 자세한 내용: https://simplepro.tistory.com/19)

 

하지만 여기서 의문이 들 수 있습니다. 왜 굳이 활성화함수를 써야하는가? 라는 의문입니다.

먼저 활성화 함수에는 크게 tanh, relu, sigmoid 등이 존재합니다.

 

wx + b 의 형태로 표현하기 힘든 함수들이죠.

각 노드가 활성화함수 없이 전부 wx + b 의 형태로만 연산이 된다고 가정해봅시다.

한 노드의 첫번째 입력층에서 두번째 은닉층으로의 연산을 f(x)라고 정의하고,

그 노드에서 세번째 층으로의 연산을 g(x)라고 정의한다면

세번째 층까지의 연산은 다음과 같이 표현할 수 있을 것입니다.

 

 

이렇게 된다면 세개 이상의 층이 존재하지 않아도 되지요.

그렇기에 활성화함수를 사용하고, 더 다양한 표현을 할 수 있는 것입니다.

 

자 그렇다면 은닉층 개수는 어떻게 정하는 것이 좋을까요?

은닉층의 개수와 뉴런 개수에 따라 모델의 복잡도가 결정됩니다.

 

복잡한 문제에서는 은닉층의 개수가 적은(하지만 뉴런수는 많은) 신경망보다, 은닉층의 개수가 많은 신경망의 파라미터 효율성이 훨씬 좋습니다. 그렇기 때문에 보통은 은닉층의 개수를 많게 합니다.

 

왜냐하면 은닉층이 여러개 쌓여있다는 것은 어떤 문제에 대해서 계층적으로 접근할 수 있다는 뜻이니까요.

하위층에서는 아주 간단한 저수준 구조를 학습하고, 층이 높아질 수록 수준이 높은 구조를 학습할 수 있을 것입니다.

 

복사/붙여넣기 기능이 없는 드로잉 소프트웨어로 숲을 그려야 한다면 시간이 아주 많이 걸릴 것입니다. 하지만 복사/붙여넣기 기능이 있다면 훨씬 더 빠르게 가능할 것입니다. 즉 하위층에서는 선과 같은 아주 간단한 구조를 학습하고, 더 높은 층에서는 사각형과 원과 같은 구조를 학습하고, 그 끝에 가서는 얼굴 구조를 학습하는 것입니다.

(이 비유는 핸즈온 머신러닝에서 인용하였습니다 👍👍)

 

심층신경망이 강력한 이유가 바로 이것입니다.

 

이미 학습되어있는 신경망을 사용하여 학습하는 전이학습도 존재합니다.

헤어스타일을 학습시키려고 할 때, 얼굴을 학습한 신경망의 가중치를 초기 가중치로 정의하고 학습한다면 수렴시간이 훨씬 짧아질 것입니다. 얼굴을 학습한 신경망은 저수준 구조를 이미 학습한 상태이기 때문입니다. 고수준 구조만 잘 학습하면 모델이 수렴할 것입니다.

'인공지능 > 이론' 카테고리의 다른 글

(18) 컴퓨터 비전  (0) 2021.11.12
(17) 심층 신경망  (0) 2021.10.26
(15) 비지도학습  (0) 2021.10.23
(14) 차원 축소 PCA  (0) 2021.10.22
(13) 앙상블  (0) 2021.10.14