Data scientist/Machine Learning

신경망 모형 + Python_Code

맨사설 2021. 8. 27. 14:20
728x90

◎ Perceptron

  • 하나의 뉴런
  • 입력 데이터 혹은 다른 레이어의 출력물을 받아 결과값을 내는 구조
  • Input, weights, activation function (활성함수)로 구성

기본적인 구조

 

※ Activation function(활성함수) 특징 : 연속, 비선형, 단조증가, bounded, 점근성의 특성

 

Activation function의 종류 2가지

 

 

※ Activation function(활성함수)의 필요성 : 은닉 layer를 의미 있게 쌓아주는 역할, 선형의 layer만 쌓인다면, 결국 하나의 선형식이 된다. 출력값의 range를 결정

 

신경망 모형의 구조

 

※ Input layer(입력층) : 입력 데이터를 의미

 

※ Hidden layer : 입력 데이터 혹은 또는 다른 Hidden layer의 출력 값, 위의 입력값을 받는 perceptron들의 집합

 

※ Output layer : 마지막 hidden layer의 출력 값, 최종 출력물을 만들어내는 perceptron들의 집합

 

 

◎ 수학적 개념 이해

⑴ 바이너리 논리 연산 : AND, OR, XOR 연산이 존재

 

⑵ 단층 Perceptron : 속성이 2개인 경우, 평면상의 직선으로 표현 가능, 직선으로 분리되는 영역을 통하여, 2-class problem을 해결

 

 

⑶ AND 연산을 하는 Perceptron : 

AND 연산

⑷ OR 연산을 하는 Perceptron : 

OR 연산

 

⑸ XOR 연산을 하는 Perceptron :

multi-layer perceptron

 

 

◎ 인조 뉴련 OR 연산 구축

 

※ Weight 업데이트 알고리즘 :

  • Gradient descent (경사하강법)

기본식

§ LR : weight를 변화시키는 정도 ( 값이 너무 크면 정확도가 떨어지며 값이 너무 작아도 수렴하기까지 시간이 오래 걸림)

 

§ E : 정의된 error 값

 

§ Activation function : step function

 

§ 알고리즘의 진행과정 : 1 임의의 LR값, 초기 w값 설정 -> 2 출력값을 계산 -> 3 E의 계산 -> 4 w의 업데이트 -> 2-4 반복

 

 

 

◎ Backpropagation (역전파 알고리즘)

  • Multi layer perceptron을 학습시키기 위한 방법
  • Output layer에서의 error의 변화량을 앞선 layer들로 전파한다는 개념

 

◎ 신경망 모형의 한계점

1. Gradient vanishing

- Sigmoid 함수의 한계점 : 미분함수값 최대값 1/4, 미분했을때 X 값이 0에서 멀어질 수록 0에 가까워 진다. + Backpropagation시 미분값이 소실되는 현상 발생 + 함수값 중심이 0이 아님

 

☆ 해결방법 : ReLU 함수 사용 => 0 보다 큰 경우 기울기 유지, 0보다 작은 경우 기울기가 없는 문제점은 다른 ReLU 계열 함수 사용 (ELU {Exponential Linear Unit})

ReLU 함수

 

 

2. 중간해 멈춤 현상

- 최적해에 이르기 전에 중간해에서 멈추는 현상

 

☆ 해결방법 : Pre-training : Boltzmann Machine = Unsupervised 방식으로 미리 training 시켜 local minima 문제를 해소, 올바른 초기값 선정에 도움

 

 

3. 과적합 문제 : Alpha 값을 통하여 weight의 크기를 제한하는 방법이 사용되었으나, 부족

 

☆ 해결방법 : Drop out을 총한 과적합 문제 완화

 

13.NN_type_before
728x90

'Data scientist > Machine Learning' 카테고리의 다른 글

의사결정나무 + Python_Code  (0) 2021.08.26
SVM + Python_Code  (0) 2021.08.26
LDA + Python_Code  (0) 2021.08.25
K-NN + Python_Code  (0) 2021.08.25
Naive Bayes + Python_Code  (0) 2021.08.25