본문 바로가기

Deep Learning With Tensorflow/01.신경망 구현 지식

01. 퍼셉트론에 대한 이해와 활성화 함수

반응형

퍼셉트론

 

퍼셉트론은 입력 특징 또는 간단히 특징이라 불리는 n개의 크기를 갖는 입력 벡터(x1, x2,... xn)가 주어지면 1(예) 또는 0(아니오)을 출력하는 간단한 알고리즘이다.

 

 

퍼셉트론은 '아마도'라는 결과를 표현할 수 없다는 점에 유의하자, w와 b를 정의하는 방법을 알고 있다면 '예(1)'또는 '아니오(0)'로 대답할 수 있다.

 

텐서플로 2.0으로 구현한 퍼셉트론

Sequential() 모델은 신경망 계층의 선형 파이프라인 (스택)이다. 아래의 코드는 784개의 입력 변수(특징이라고도 함)를 취하는 10개의 인공 뉴런을 가진 단일 계층을 정의한다. 망이 '밀집(denes)'돼 싸는 것은 각 계층의 뉴런이 이전 계층에 위치한 모든 뉴런과 완전 연결돼 있고 그다음 계층에 있는 모든 뉴런과도 완전 연결돼 있다는 것을 의미한다.

 

각 뉴런은 kernel_initializer 매개변수를 통해 특정 가중치로 초기화할 수 있다. 몇 가지 옵션중 가장 일반적인 몇 가지는 아래와 같다.

import tensorflow as tf
from tensorflow import keras
NB_CLASSES = 10
RESHAPED = 784

model = tf.keras.models.Sequential()
model.add(keras.layers.Dense(NB_CLASSES, 
	input_shape=(RESHAPED,), 
    kernel_initializer='zeros', 
    name='densen_layer', 
    activation='softmax'))
  • random_uniform: 가중치는 -0.05 ~ 0.05사이에서 균등하게 랜덤 분포한다.
  • random_normal: 가중치는 가우스 분포에 따라 평균이 0이고 작은 표준편차 0.05로 초기화된다. 가우스 분포에 익숙하지 않은 사람은 대칭 모양의 '벨 곡선'을 생각하면 된다.
  • zero: 모든 가중치는 0으로 초기화된다.

 


다중 퍼셉트론: 신경망첫 번째 예제

 

역사적으로 '퍼셉트론'은 단일 선형 계층 모델에 붙여진 이름으로, 그 결과 여러 계층이 있는 경우에는 다층 퍼셉트론이라고 부른다. 입력과 출력 계층은 외부에서 볼 수 있지만 중간의 다른 모든 계층은 숨겨져 있으므로 은닉층( hidden layers)이라는 이름이 붙게 된다.

 

첫 번째 은닉층의 출력은 다른 선형 함수가 적용된 두 번째 계층으로 전달되고, 그 결과는 하나의 단일 뉴런으로 구성된 최종 출력 계층으로 전달된다.

 

퍼셉트론 훈련의 문제점과 해결책

단일 뉴런을 생각할 때, 가중치 w와 편향 b의 값으로 가장 적합한 것은 무엇일까?고양이 이미지를 포함한 것과 그렇지 않은 별도의 이미지 집합이 있다고 가정해본다. 각 뉴런은 이미지의 단일 픽셀 값에서 입력을 받는다고 가정하자. 우리는 컴퓨터가 이러한 이미지를 처리해 나가면서 각 뉴런이 가중치와 편향을 조정해 잘못 인식되는 이미지의 비율이 점차로 줄어들기를 원한다. 이 접근 방식은 매우 직관적으로 보이지만 출력에 아주 작은 변화만 일으키려면 가중치(또는 편향)도 약간만 변경해야 한다. 하지만 출력에 큰 변화가 생긴다면 점진적인 학습을 할 수 없다.

 

그러므로 0에서 1로 점진적으로 변경되는 함수가 필요하다. 그것이 바로 활성화 함수(Activation Function)

 

 


활성화 함수

 

1) 시그모이드

입력이 (-∞, ∞)에서 변할 때 출력은 (0,1)에서 작은 변화를 일으킨다. 비선형 함수에서 스그모이드를 사용할 수 있다.

 

2) tanh

출력은 (-1,1)에서 작은 변화를 일으킨다. 비선형 함수에서 스그모이드를 사용할 수 있다.

 

3) ReLU

음수 값에 대한 결과를 항상 0으로 양의 값에 대해서는 선형으로 증가한다. 시그모이드와 유사하지만 구현이 매우 간단하며 초기 GPU에 구현하기에 좋다.

 

시그모이드는 일반적으로 신경망 전문 용어로 활성화 함수(Activation Functions)라고 한다. 이는 신경망에서 오차를 조금씩 줄이며 차츰 적응해 나가는 학습 알고리즘을 개발하는 기본 구성 요소로 사용한다.

 

 

결국 신경망이란?

한마디로 머신러닝 모델은 어떤 입력을 해당 출력으로 매칭 하는 함수를 계산하는 방법이다. 이 함수는 여러 덧셈과 곱셈 연산에 지나지 않는다. 그러나 비선형 활성화와 결합해 여러 계층으로 쌓을 경우 이러한 함수는 거의 모든 것을 학습할 수 있다.

반응형