딥러닝?
딥러닝이란, 인공 신경망을 사용하여 컴퓨터가 데이터에서 패턴을 보고
이를 통해 데이터로부터 스스로 특징을 학습해서
우리 주위의 다양한 문제를 해결하는 머신러닝의 한 방식을 말한다.
그렇다면 인공 신경망이 무엇인데 특징을 잘 찾고 문제를 잘 해결할까?
이를 위해 먼저 인공 신경망의 기원이 되는 퍼셉트론을 알아두는게 좋다.
퍼셉트론이란?
퍼셉트론은 다수의 신호를 입력받아 하나의 신호를 출력하는 논리회로 를 말한다.
여기서 말하는 신호란, 전류를 타고 흐르는것을 말하며,
우리 인간의 뇌도 마찬가지로 전류신호를 타고 정보를 전달한다.
다만, 실제의 전류와는 조금 다르게 퍼셉트론의 신호는 흐른다(1) 와 안흐른다(0) 의
두가지의 값만을 가진다.
[그림1.1]
[그림 1.1]은 퍼셉트론의 간단한 예시로 그림의 원은 뉴런 또는 노드 로 이해하면 된다.
그림과 같이 퍼셉트론은 입력으로 2개의 신호를 받는데,
각각 x1과 x2가 입력신호로 들어오고,
w1,w2의 가중치가 입력신호에 곱해져서
최종적으로 y를 출력하는 간단한 예시이다.
여기서 중요한건, 퍼셉트론은 위에서 설명한 바와 같이
신호가 흐른다(1)와, 안흐른다(0) 로 나눠져있다는 사실인데
y를 출력할때 뉴런에서 보내온 이 신호(x들과 w들의 계산결과)에 따라
이 총합이 특정 임계값θ를 넘을때 1을 출력 하는 방식이다.
[수식1.2.1]
대략 위와 같은 형태로 퍼셉트론은 입력신호와 가중치를 계산하여 출력할지(1) , 안할지(0) 를 결정한다.
앞서 본 수식[수식1.2.1]도 직관적이고 알기 쉽지만,
이 수식을 또 다른 방식으로 표현할수도 있다.
[수식1.2.2]
위의 [수식1.2.2]는 [수식1.2.1]에 편향을 추가한 형태이다.
여기서 b를 편향 이라고 하는데
퍼셉트론은 입력값에 가중치를 곱하고 편향을 합한 결과가 0을 넘으면 1을 출력, 그렇지 않으면 0을 출력하는 형태로도 볼수있다.
하지만 중요한것은 편향은 가중치와 역할이 다르다는 점이다.
가중치(w)는 각 입력 신호가 결과에 주는 영향력을 나타내는 파라미터고,
편향(b)은 뉴런이 얼마나 쉽게 활성화 1or0 하는가를 조절하는 파라미터이다.
이러한 편향과 가중치를 조절한다면 뉴런이 활성화 되는것을 조절하기가 용이하기 때문에
편향과 가중치는 신호를 출력하는데에 아주 중요한 파라미터라고 볼수 있다.
앞서, 퍼셉트론은 1과 0을 출력할수 있다고 했는데
이를 이용하면 어떠한 특정 논리 게이트를 표현할수 있다.
AND , OR, NAND 가 대표적인 예인데
[표1.3]
위의 [표1.3] 처럼 각각 AND , NAND, OR 를 표현할수 있다.
AND는 x1 컬럼과 x2 컬럼이 모두 1일때 1을 출력하고,
NAND는 x1 컬럼과 x2 컬럼이 모두 1이 아닐때만 1을 출력하고,
OR는 x1 컬럼과 x2 컬럼 둘중 하나만 충족해도 1을 출력한다.
그렇다면 네번째 표인 XOR는 어떨까?
퍼셉트론의 논리구조는 지극히 직선을 나눌수 있는 논리만을 갖고 있기 때문에
[표1.3]의 XOR는 기존의 퍼셉트론의 개념으로는 표현할수가 없다.
그렇다면 XOR를 표현할수 있는 방법은 없을까?
[그림1.4]
가령, 바다와 육지를 나누는 어떤 라인이 있다고 가정하자.
위 [그림1.4]는 좌표로 어느 해안가를 표시한 지도이다.
여기서 우리가 물이 존재하는곳을 땅 지역과 구분하고 싶다면 어떻게 할수 있을까?
기존의 퍼셉트론으로는 육지 내에 있는 호수 (1,1)지역을 물 지역으로 표현할수 없다.
즉 퍼셉트론은 직선의 구분은 가능하지만, 비선형적인 방식으로 표현할수 없다는 뜻이된다.
여기에서 등장하는 개념이 바로 다층 퍼셉트론 이다
이 다층 퍼셉트론 을 사용하면 퍼셉트론으로 표현할수 없었던 XOR 표현문제 즉
바다와 육지를 비선형적으로 구분하는 방법을 표현 할수있게된다.
자 그렇다면, 다층 퍼셉트론이란 뭘까?
다층 퍼셉트론이란 말그대로 퍼셉트론에 층을 쌓아올란것을 말한다.
자, 여기서 의문이 생길수 있다.
층을 쌓아 올린것만으로 어떻게 직선만 가능했던 퍼셉트론을
비선형적 표현도 가능하게 만들수 있지?
다음은 다층 퍼셉트론의 예를 보고 이해하면 좋을것 같다.
[그림1.5]
위 [그림1.5]는 다층 퍼셉트론의 논리회로이다.
입력 신호로 들어온 x1,x2는 각각 NAND와 OR게이트에 입력이되고 NAND와 OR에서 출력을하면 AND로 이어지는 구조이다.
즉 입력 신호를 받고 출력하는 절차가 늘어난것이다.
좀더 알기 쉽게 표현하자면 아래 표를 참고하면 편하다.
[표1.6.1]
[표1.6.2]
[표1.6.1]과 [표1.6.2]는 그림1.5의 회로를 순서대로 표현한것이다.
x1,x2의 입력이 OR를 통해 a1으로, NAND를 통해 a2로,
a1,a2의 입력이 AND를 통해 y로출력되는데,
표1.6.1은 둘중 하나만 1일때 결과1을 출력하고,
표1.6.2은 x1,x2가 둘다1이거나 0일때는 결과 0을 출력하여
최종적으로 XOR게이트를 표현할수 있게 되었다.
[그림1.7]
따라서 최종적인 모습을 보면
그림[1.7] 처럼 다층 퍼셉트론을 이용하면,
원하는 지역의 물과 땅을 비선형방식으로 나누게 할수 있다.
지금까지 딥러닝의 개념과 신경망의 기원인 퍼셉트론, 그리고 퍼셉트론의 문제점을 해결한 방식인
다층 신경망에 대해서 알아 보았다.
앞서 말한 내용을 정리를 해보자면 다음과 같다.
딥러닝은 인공신경망을 사용하여 데이터에 패턴을 보고 특징을 추출하여 스스로 학습하는 머신러닝의 방법이다.
퍼셉트론은 신경망의 기원으로 신호를 입력받고 출력할지 안할지를 결정하는 논리회로의 일종이다.
가중치와 편향은 신호출력을 쉽게 조절할수 있도록 도와주는 파라미터이다.
선형vs비선형 :퍼셉트론은 선형방식으로 AND , NAND ,OR 등의 게이트를 구분할수 있지만 비선형 방식은 구현할수 없다.
다층퍼셉트론: 다층 퍼셉트론을 사용하면 비선형방식까지도 구현할수 있다.
다음 챕터에서는 앞서 정리한 퍼셉트론개념을 확장해 신경망(MLP)를 어떻게 표현하는지에 대해 설명할 것이다.
[슬라이드1]
[슬라이드2.1]
[슬라이드2.2]