본문 바로가기
Artificial Intelligence/Basic

Chapter 1 - 1 퍼셉트론(Perceptron), single layer

by SuperMemi 2020. 3. 6.
반응형

아주 기본적인 머신러닝 조차 잘 모른다면 아래의 글을 읽어보길 바란다.

2020/03/21 - [AI/ML & DL] - 머신 러닝(Machine learning)이란 무엇인가? (supervised? or unsupervised?)

 

머신 러닝(Machine learning)이란 무엇인가? (supervised? or unsupervised?)

머신 러닝이란? 다양한 정의가 있지만 가장 유명한 두 가지 정의로 설명하겠다. Arthur Smuel(1959) : 구체적인 프로그래밍 없이도 컴퓨터가 학습할 수 있는 능력을 주는 것을 연구하는 영역이다. Tom Mitchell(1..

supermemi.tistory.com

2022.04.21 - [AI/Ai Series] - [ AI 기초 ] 3. Linear Model (classifier)

 

[ AI 기초 ] 3. Linear Model (classifier)

[ AI 기초 ] 3. Linear Model (classifier) 이전글 : [AI/Series] - [ AI 기초 ] 2. AI 의 역사 [ AI 기초 ] 2. AI 의 역사 [ AI 기초 ] 2. AI 의 역사 이전글 : [ AI 기초 ] 1. Introduction for Ar..

supermemi.tistory.com

2022.04.21 - [AI/Ai Series] - [ AI 기초 ] 4. Logistic Regression

 

[ AI 기초 ] 4. Logistic Regression

[ AI 기초 ] 4. Logistic Regression 이전글 : [ AI 기초 ] 3. Linear Model (classifier) [ AI 기초 ] 3. Linear Model (classifier) [ AI 기초 ] 3. Linear Model (classifier) 이전글 : [AI/Series]..

supermemi.tistory.com


- 1-1. Introduction

- 1-2. 기본 구조.

         - 퍼셉트론(Perceptron)

본 카테고리의 글들은 책.

<신경망과 심층학습 Neural Networks and Deep Learning>

/ 차루 C. 아가르왈 지음. 류광 옮김. Jpub 출판. 을 바탕으로 정리.


1 - 1 Introduction

 

* key words : Artificial neural network, neuron, weight

 

  인공 신경망(artificial neural network)은  인간의 뇌 neuron mechanism과 유사한 모습을 보여준다. 

figure1. biological neuron model & artificial nueron model.

  Biological neuron model

 

 - 자극(input data)이 synapse(weight)를 통해서 cell body(function)로 들어오게 된다.

 

 - cell body(function)에서 threshold(임계치)를 넘게 되면 연결된 다른 neuron으로 output value를 전파한다.

 

 - output value는 연결된 neuron의 synapse를 통과하여 또 새로운 전파를 만들어낸다.(다층 신경망의 개념)

 

 

  Artificial neuron model

 

  인공 신경망도 위와 유사한 과정을 따른다.

  과일을 판별하는 인공 신경망(single-layer)을 예로 들겠다.

 

  input data : 과일 이미지의 픽셀 정보

  output data : 사과, 배,... (보통 label값)

  weight : 가중치. 얼마나 각 특징이 결과 값에 영향을 미치는가  

 

  input data는 weight 값의 조정을 받고,

  neuron(function)을 통과하여 사과인지 배인지

  output data를 만들어 낸다.

 

  이때 output value가 얼마나 잘 판별 하느냐에 기초해서

  신경망의 가중치(weight)들의 정확성을 평가한다.

 

  Output data 즉, 과일 판별을 정확도를 위해, 우리는 결과값의 오차(lossfunction)가 줄어드는 방향으로 가중치(weight)들을 수정해 나간다(Gradient descent).

 

  컴퓨터는 훈련데이터(training data set)로 최적의 가중치(weight)(gradient descent 활용)를 찾은 후,

 

  훈련데이터에 없던 새로운 이미지들을 판별하는 인공신경망 알고리즘을 만들 수 있다. 


1 - 2 신경망의 기본 구조

 

* key words : 단층(single-layer)신경망, 다층(multi-layer)신경망, 퍼셉트론(perceptron)

 

 

1. 단일 계산층 : 퍼셉트론(perceptron)

 

  퍼셉트론이란 단순히 얘기 해서 input layer 하나와 output layer 하나로 이뤄진 가장 단순한 구조의 신경망이다.

 

  과정은 단순하다. 예를들어 사과그림이 입력데이터라고 할때, 입력받는 데이터의 각 feature값을 각 weight값에 곱해서 더해준다. 이를 합한 후 activation function을 이용해 결과값(사과인가 아닌가)을 도출한다.

 


Perceptron 구조

 

  가장 단순한 형태의 신경망을 퍼셉트론이라고 부른다. 입력층(input layer) 하나와 출력 노드 하나로 구성된다.

 

  입력층은 m개의 노드로 구성되며, m개의 특징(feature)들로 이루어진 벡터 X bar = [x_1, x_2, ... ,x_d]를 가중치 벡터 W bar = [w_1, w_2, ... , w_d]를 통해 출력 노드에 전달한다.

 

  입력층 자체는 그 어떤 계산도 수행하지 않는다. 선형 함수는 출력 노드에서 계산된다. 신경망은 이 함수가 산출할 실숫값을 이용해서 예측한다.

 

 

 

  퍼셉트론은 입력된 특징들에 가중치들을 곱해서 모두 합한 후, 그 합에 부호함수를 적용해서 최종적인 분류명(class label)을 산출한다. 이 부호 함수는 활성화 함수(activation function)의 역할을 한다. 

 

  단순한 구조에서도 여러가지 팁이 있다. 첫번째는 아래의 bias를 조정해주는 것이다.

 


 

bias

 

 

  많은 경우, 예측에 변하지 않는 부분이 존재한다. 예를 들어 특징 변수들이 평균을 중심으로 분류되어 있되, 분포가 한쪽으로 크게 치우쳐져 있을 때, 치우침 변수 bias b를 도입할 필요가 있다.

 

아래의 Gradient descent는 가중치(weight)를 최적화 시키는 과정을 설명해준다.

 


Gradient descent

 

  결국 우리가 원하는 것은 결과의 오차가 작은 즉, 정확하게 판별하는 알고리즘을 만드는 것이다. 이는 일반적으로 예측값과 실제값의 차이를 나타내는 loss funtion을 이용한다. cost funtion(loss funtion의 평균)이 0에 가까울 수록 잘 예측한다고 말할 수 있다. 0 에 수렴하도록 만들기 위해서 우리는 경사 하강법(gradient descent)를 통해 가중치(weight) 값을 update해가며 최적화시켜간다.

 

Gradient descent는 경사 하강법으로 비용함수(cost function) J(w)의 w에 대한 미분값을 이용해서 update를 해나간다. 

 

  이때 부호함수의 경우 미분이 불가능한 계단모양의 함수이다.

 

  경사 하강법을 이용하여 최적화 시키기 위해서 우리는 평활화 함수를 이용해서 미분가능한 모양으로 바꿔꿔줘야만, 그 미분값(기울기)를 이용하여 update를 할 수 있다. 이를 해결하기 위해 위해, 주로 Activation function을 sigmoid function나 ReLu함수를 사용한다.

 

다양한 activation functions

  


 

Learning rate

 

  learning rate란 가중치 W를 update하는 과정에서 학습 속도를 제어하는 역할을 한다.

너무 낮을 경우 많은 많은 의미없는 update가 필요로해서 오래걸린다.

너무 높을 경우 수렴하지 않고 발산한다.


 

Activation function(활성화 함수)

 

  출력 노드의 종류와 수는 Activation funtion(활성화 함수)에 따라 달라지며, activation funtion의 선정 기준은 주어진 과제의 성격에 의존한다.

 

  예를 들어 k중 분류 과제(k가지 부류 중 하나를 예측해야 하는 분류과제)를 위해서는 softmax activation function(활성화 함수)을 이용해서 k개의 값을 출력할 수 있다. k개의 과일을 구분할 수 있는 것이다. 

 

  softmax activation funtion의 경우 출력값을 확률값으로 변환하는 역할을 한다.

 

따라서 출력값 k개의 합은 1이다. k개중의 어느 값이 확률적으로 가장 높은 값을 가지냐가 결국 예측값이 되는것이다. 

Softmax layer 구조

 

 


 

손실함수(loss funtion)

 

 

  손실함수(loss function)의 선택은 주어진 응용 과제에 적합한 방식으로 선택되어야한다.

 

 

예를 들어 이진값이 아닌 수치를 출력하는 최소제곱 회귀를 위해서는 MSE(mean squared error) 형태의 단순한 제곱 손실함수가 필요하다. 

 

 

- Binary classification(Logistic regression). Sigmoid 사용시.

logistic regression loss funtion

- Categorical classification(Cross-entropy). Softmax 사용시.

 

    : 출력 노드, 활성화 함수, 손실함수의 선택이 주어진 응용에 의존한다.

     다항 로지스틱 회귀(Multinomial logistic regression)를 사용

     또는 softmax activation function(활성화 함수) 사용 시 cross-entropy 손실함수 사용..

 


참고자료

https://www.slideshare.net/ssuser06e0c5/the-world-of-loss-function

http://www.datamarket.kr/xe/board_LCmL04/26153 

https://riptutorial.com/machine-learning/example/31625/softmax-function

https://github.com/BD-SEARCH/MLtutorial/wiki/Activation-Function

https://octaviansima.wordpress.com/tag/neural-networks/

https://untitledtblog.tistory.com/27

https://www.jeremyjordan.me/nn-learning-rate/

https://m.blog.naver.com/PostView.nhn?blogId=ollehw&logNo=221517423957&proxyReferer=https%3A%2F%2Fwww.google.com%2F

 

 

 

 

 

반응형