본문 바로가기
인공지능

Neural Network

by hihijh826 2024. 6. 9.
728x90
반응형
SMALL

📍Neural Network

- 인공지능의 한 분야로, 인간의 신경망을 모방한 컴퓨팅 시스템. 

- 입력층(Input Layer), 은닉층(Hidden Layer), 출력층(Output Layer)로 구성

 

📍perceptron

- 이진분류 모델을 학습하기 위한 지도학습기반의 알고리즘 (개 고양이 분류) 

- 다수의 입력으로부터 하나의 결과를 내보내는 알고리즘

- 단순한 선형 분류기로, 입력을 받아 각 입력에 가중치를 곱한 후, 그 합이 특정 임계값을 넘으면 1을 출력하고 그렇지 않으면 0을 출력하는 방식으로 작동
- 1개의 뉴런으로만 구성 

 

 

  1. 입력값(X): 퍼셉트론에 들어가는 신호입니다. 이 입력값은 특성(feature)이라고도 하며, 각각의 입력값은 그에 해당하는 가중치와 곱해집니다.
  2. 가중치(W): 각 입력 신호가 결과에 미치는 영향력을 조절하는 매개변수입니다. 학습 과정에서 이 가중치는 지속적으로 조정됩니다.
  3. 활성화 함수(Activation Function): 가중치가 적용된 입력값의 합을 받아서, 출력값을 결정하는 함수입니다. 퍼셉트론에서는 주로 단위 계단 함수(Step Function)가 사용되어, 특정 임계값을 넘으면 1을, 넘지 않으면 0을 출력합니다.
  4. 출력값(Y): 활성화 함수를 거쳐 최종적으로 퍼셉트론이 내놓은 결과값입니다.

☑️종류

단층 퍼셉트론 : 은닉층 x
- 디지털 논리 회로 개념에서 AND, NAND, OR 게이트를 구현
다층  : 은닉층 1개이상 존재 
-  XOR 게이트를 구현
 심층신경망(DNN) 딥러닝 :  2개 이상의 은닉층을 가짐 

 

☑️학습 과정

  1. 가중치를 초기화합니다.(매개변수 선택)
  2. 각 입력값에 대해 가중치를 곱하고, 그 합에 활성화 함수를 적용하여 출력값을 얻습니다.
  3. 출력값과 실제 값(레이블)을 비교하여 오차를 계산합니다.
  4. 오차를 줄이기 위해 가중치를 조정합니다. 이 과정에서 일반적으로 경사 하강법(Gradient Descent)이 사용됩니다.
  5. 모든 학습 데이터에 대해 2~4단계를 반복합니다.

퍼셉트론은 비교적 간단한 구조로 인해 구현이 용이하고, 선형 분리가 가능한 문제에 대해서는 높은 효율성을 보입니다. 그러나 XOR 문제와 같이 선형 분리가 불가능한 문제에 대해서는 퍼셉트론으로 해결할 수 없다는 한계가 있습니다. 이러한 한계를 극복하기 위해 다층 퍼셉트론(Multi-layer Perceptron, MLP)과 같은 발전된 형태의 인공신경망이 연구되었습니다.

 

☑️활성화 함수

1) sigmoid : 
- 함수의 출력 값이 0~1

 


2) hyperbolic Tangent:
- 함수의 출력값이 -1 ~ -1
 - hidden layer에서 많이 사용됨



3) relu:
- 음수 입력 -> 0 , 양수 그대로 

 

☑️Gradient(기울기) Descent 경사 하강법 (최적화 알고리즘)

- 입력 값과 목표 값의 관계가 가장 잘 맞춰지도록 가중치 w를 찾도록

- Cost function을 최소화하는 파라미터를 찾기 위한 알고리즘

- 경사 하강법(Gradient Descent)은 머신 러닝과 딥 러닝에서 널리 사용되는 최적화 알고리즘입니다.

- 기본 아이디어는 cost function (비용 함수)의 기울기를 계산하여 이 기울기가 가리키는 방향으로 매개변수를 조금씩 조정해가며 최소값을 찾는 것

 

☑️작동 원리


1) 매개변수 선택:

먼저, 매개변수(가중치)에 대한 초기값을 선택합니다. 이 값은 무작위로 선택되거나 특정 규칙에 따라 초기화될 수 있습니다.


2) 기울기 계산:

비용 함수의 현재 매개변수에 대한 기울기(편미분 값)를 계산합니다. 이 기울기는 매개변수를 조정해야 할 방향과 크기를 알려줍니다.


3) 매개변수 업데이트: 계산된 기울기와 학습률(Learning Rate)을 곱한 값을 현재 매개변수에서 빼주어 매개변수를 업데이트합니다. 학습률은 매개변수를 얼마나 크게 조정할지를 결정하는 값입니다.


4)반복: 위의 과정을 비용 함수의 최소값에 도달할 때까지 반복합니다.

 

 

 

 Cost function

 전체 데이터에 대해 평균적으로 얼마나 잘못 맞추었는지

- 모델의 예측값과 실제값 사이의 차이를 측정하는 함수

- 이 함수의 값이 작을수록 모델의 성능이 좋다고 판단

 

Gradient의 값

If 0 : 현재 weights이 optimal 학습 종료

Not 0: 현재 weights은 optimal이 아님 학습 진행

Gradient가 0이 아닌 경우, gradient의 반대 방향으로 이동 ( 현재 위치에서 기울기가 내려가는 방향)

 

 

Loss function

출력 𝑦가 얼마나 실제 𝑡에 가까운지

Regression: squared loss

𝐿 =1/2 (𝑡 − 𝑦)2

Classification: cross-entropy

𝐿 = − σ𝑖 𝑡𝑖𝑙𝑜𝑔𝑝𝑖

 

 

 

☑️weights의 업데이트와 관련된 세가지 방법

 

1) [확률적 경사 하강법(Stochastic Gradient Descent, SGD)]

- 개별 training example에 대한 loss function 계산하고 gradient를 업데이트

- 각 반복마다 단 하나의 샘플을 무작위로 선택하여 기울기를 계산합니다. 이 방법은 빠르게 수렴하며, 미니 배치 경사 하강법보다 더 불규칙한 수렴 과정을 보입니다.경사 하강법은 그 자체로 강력한 도구이며, 다양한 머신 러닝과 딥 러닝 모델을 최적화하는 데 필수적인 방법입니다.

 

 

 

2) [배치 경사 하강법(Batch Gradient Descent)]

- 전체 데이터셋에 대해 비용 함수의 기울기를 계산합니다.

- 네트워크 weights을 고정한 후, 모든 training examples에 대한 loss function을

계산한 후에 gradient를 업데이트

 

3)[미니 배치 경사 하강법(Mini-Batch Gradient Descent)]

- N개의 전체 training examples 중에서 n개의 mini-batch examples를 구성하고

n개의 examples를 사용하여 gradient 업데이트

- 데이터셋을 작은 배치로 나누어 각 배치에 대해 기울기를 계산합니다. 이 방법은 전체 데이터셋과 비교하여 빠른 수렴을 보여주며, 컴퓨터 메모리를 효율적으로 사용할 수 있습니다.

 



 

☑️[가중치 업데이트 ]

 

- Gradient Descent에서 Weights(가중치)를 업데이트하는 양은 주로 학습률(learning rate)과 경사(gradient)에 의해 결정

- 최적의 가중치를 찾는 것이 Gradient Descent 알고리즘의 기본입니다.

a(알파)학습률 * 경사



예를 들어, 만약 학습률이 0.01이고 현재 가중치에 대한 손실 함수의 경사가 0.5라면, 가중치는 다음과 같이 업데이트됩니다:
[
w := w - 0.01 \times 0.5
]

이렇게 하면 가중치는 0.005만큼 감소하게 됩니다. 

 

이 과정을 반복하여 최적의 가중치를 찾는 것이 Gradient Descent 

 


  [학습률(Learning Rate)]

- 가중치를 얼마나 크게 조정할지를 결정하는 매개변수입니다.

- 너무 작으면 학습이 느려지고, 너무 크면 최적화가 불안정해지고 학습 과정에서 발산할 수 있습니다.

- 일반적으로 0.01 또는 0.001을 사용 

- 초기에는 learning rate을 크게 잡고, 학습이 진행될 수록 learning rate이 줄어들 수 있도록 해주는 게 좋음

728x90
반응형
LIST

'인공지능' 카테고리의 다른 글

머신러닝  (0) 2024.04.26