본문 바로가기
기계학습/[밑바닥부터 시작하는 딥러닝]

1장-3장 정리 - 퍼셉트론~신경망

by tryotto 2019. 8. 6.

1~2장///

퍼셉트론 : 다수의 신호를 입력으로 받아 하나의 신호를 출력하는 것.


<특징>

- 가중치와 신호가 곱해진 값들의 합이 임계값을 넘어설때에만 1을 출력

-> 여기서는 Θ으로 표현함

** 전기에서, 저항 이랑 비슷한 개념으로 쓰임.

-어떠한 논리식을 표현하고 싶을 떄, 이에 해당하는 1) 가중치 와 2)임계값 을

설정해준다

-> 여러개의 가중치/임계값 쌍이 존재한다.

-> 어떤 가중치와 임계값을 설정하는지는 인간이 정하는 것 

(학습 데이터 설정하기. 학습이란, 적절한 매개변수 값을 정하는 작업)

- 실제 식에선, 임계값을 사용하기보단 "편향"을 사용한다.


<종류>

- 선형 : 참값과 거짓값을 가를 수 있는 직선이 있을때.

-> 단순 퍼셉트론

- 비선형 : 참값과 거짓값을 가를 수 있는 직선이 없을때. 곡선이 있어야함.

-> 다층 퍼셉트론

- 2층 비선형 퍼셉트론을 이용하면 컴퓨터까지 만드는게 가능함.

                                    (시그모이드 함수를 활성함수로 사용할 경우에)

- 은닉층을 만들 수 있다(Hidden Layout). 선형 함수의 경우, 은닉층을 만들 수 없음


***이때, 다층 퍼셉트론은 대부분 신경망을 지칭한다.


3장///

신경망


<의의>

- 앞서, 퍼셉트론에선 가중치/임계값을 인간이 설정했음


<특징>

- 활성화 함수의 존재.

- (단순)퍼셉트론의 경우, 가중치와 변수 곱의 총합을 그대로 사용했으나,

신경망의 경우, 해당 총 합을 "활성화 함수"에 넣어 계산한다.


<종류>

- 시그모이드 함수 ("S와 닮은" 이라는 뜻의 함수)

- 1/(1+e^-x) 함수

- 계단함수 : 임계값을 기준으로 출력값이 바뀌는 함수

<공통점> 

- 둘 다 비선형 함수이다! (둘 다 직선을 그리는 함수들이 아니므로)

-선형함수의 경우, 직선으로 표현이 가능하다

-ReLU 함수 : 0을 넘으면 입력을 그대로 출력, 0이하면 0을 출력


<응용> 다차원 배열의 계산

- 다차원 배열의 계산이 가능할 경우, 신경망을 효율적으로 구현 가능.



<출력층 설계하기>

- 종류 : 머신러닝은 크게 회귀와 분류 기능 두 가지를 한다. 각각의 기능은 다른 함수를 요구.

   1) 회귀 : 항등 함수

   2) 분류 : 소프트맥스 함수

-> exponential을 이용함. 모든 입력신호로부터 영향을 받으며 출력을 한다

 

            *** 이떄, 오버플로우 문제가 발생할 수 있다. 그럴 경우, 상수 C를 넣어줘야한다.

상수 C는 보통 a값들 중에서 가장 큰 값을 활용한다. 

그래서, 각각의 a값에다가 C값을 빼준다. 그러면 오버플로우가 발생하지 않음.


-> 소프트맥스 함수들의 총 합은 항상 1이 됨

이 성질을 이용해서, 소프트맥스 함수의 값들이 확률을 의미한다고 치환 가능.


*** 기계학습의 문제풀이 순서 

1) 학습 : 여러 데이터들을 보며, 학습을 한다

2) 추론 : 학습된 내용을 바탕으로, 최종 결론을 내린다(판단 결과)

-> 분류의 경우, 학습의 과정에서 활용되기도 하고, 추론의 과정에서 활용되기도 함

-> 소프트맥스 함수의 경우, 학습 과정에서의 분류에만 주로 활용됨(추론에는 X)


- 출력층의 뉴런 수 정하기 : 분류하고싶은 카테고리의 갯수에 맞게 뉴런 수를 정하면 됨.



<손글씨 숫자 인식>

- 신경망의 문제 해결 순서 

    1) 학습 : 훈련 데이터 -> 가중치 매개변수 학습

    2) 추론 : 학습된 가중치 매개변수를 사용 -> 입력 데이터 분류

- 신경망의 "순전파"과정이라고 한다


-MNIST 데이터셋 : 손글씨 숫자 이미지 집합

- Normaliation : 정규화

     -> 픽셀 값들을 0.0~1.0 값으로 변환을 해준다

- pre-processing : 전처리

     -> 입력 데이터에 특정 변환을 가하는 것.

- whitening : 백색화

     -> 전체 데이터를 균일하게 분포시키는 것.


- 배치 Batch : 하나로 묶은 입력 데이터

- 여러 번의 계산들을 한 번에 처리할 수 있도록 도와준다