스터디/AI

[이론] 인공신경망 이론 (ANN)

_leezoee_ 2023. 1. 19. 18:51

 

1. The Neuron

 

독립변수1, 독립변수2, 독립변수3   ----------> neuron -----------> 출력 값

 

뉴런에서 일어나는 일

step 1. 모든 입력값들이 모두 더해짐

step 2. 가중치로 곱해진 값을 모두 합한 후에는 활성화 함수를 적용

step 3. 뉴런이 다음 뉴런으로 값을 내보낼지 결정

 

 

 

 

2. 활성화함수

 

활성화 함수 그래프 [출처 : infosecml.com]

1. Threshold Function 한계값 함수

 : 한계값 함수로 X축엔 입력의 가중치 값들이, Y축은 0에서 1까지의 값이 있다, 한계값 함수는 값이 0보다 작으면 0을 리턴하고, 0보다 크면 1을 리턴하는 간단한 계단 모양의 함수이다(이분적)

 

2. Sigmoid Function 시그모이드 함수

: 1을 1더기 E의  -x 승으로 나누는 함수, X는 입력의 가중치 값들이, Y축은 0에서 1까지의 값이 있다. 시그모이드는 한계값 함수와 달리 매끄러운 곡선 모양의 그래프를 띈다. 로지스틱 회귀에서 쓰이는 함수이기도 하다. 

: 가장 마지막 레이어인 출력 레이어에 유용한데 특히 확률을 추정할 때 유용하다.

 

3. Rectifier Function 정류 함수

 : X는 입력의 가중치 값들이, Y축은 0에서 1까지의 값이 있다. 꺾인 모양의 그래프를 띈다. 0을 넘어가면서 입력값이 증가함에 따라 점차적으로 증가한다. 인공 신경망에서 많이 사용되는 함수이다.

 

4. Hyperbolic Tangent(tanh) 하이퍼볼릭 탄젠트 함수

 : 하이퍼볼릭 탄젠트 함수는 시그모이드 함수와 그래프 모양이 비슷하지만, Y축의 값이 -1부터 1까지라는 점이 다르다.

 

example) 

종속 변수가 이진변수 즉 0이나 1이라고 가정했을 때, 어떤 한계값 함수를 써야할까?

=> 한계값 함수 : 함수가 0과 1 사이에 있고, 결과 값이 0과 1로만 나오니 요구사항에 부합. 

=> 시그모이드 함수 : 함수가 0과 1사이에 있음, 다만 딱 0 아님 1을 얻고자 할때는 부적합, 시그모이드는 Y를 확률로써 사용할 수 있음. Y과 1과 같을 확률을 알려주는 척도로 사용 가능(로지스틱 회귀 접근법과 유사)

 

 

 

 

3. 신경망의 적용 방식

 

example) 부동산 가치평가 예시

 : 부동산에 대한 파라미터 몇 개로 가치를 평가하는 신경망

 

입력 파라미터 (4) : 면적, 침실 수 , 가까운 도시, 연식

case 1 : 은닉레이어 없는 경우는 단순 모든 입력가중치로 출력 값 계산

case 2 : 은닉레이어 추가 시 각 뉴런에 대한 의미있는 파라미터만 골라 가중을 진행

(여기서 은닉층에 있는 뉴런중에 입력 파라미터 중 연식 하나만 골라 가중을 진행하는 예시를 설명, 100년이 넘은 집은 대개 역사가 깊은 건물이라고 판단해 높은 가격을 측정할 수 있고 이때 활성화 함수 중 정류함수가 적용되는 좋은 예라고 설명)

 

 

 

4. 신경망의 학습 방식

 

Single Layer Feed Forward :  하나의 레이어, 순방향을 가진 매우 기본적인 신경망 (퍼셉트론이라고도 불림)

퍼셉트론 동작 과정 [출처 : liveyourit.tistory]

출력값을 명칭 할 때 y는 실제 값을 명칭하는 거기 때문에 학습을 통해 나온 출력 값은 y hat 이라고 명칭.

 

퍼셉트론 학습 방법

 

step 1. 신경망에 공급된 입력값을 가중

step 2. 활성화 함수 적용

step 3. 학습을 통한 출력 값 확인

step 4. 얻어야 하는 실제 값과 비교

step 5. 비용 함수 계산, 비용 함수가 낮을 수록 근사 값이기 때문에 낮을 수록 좋음

step 6. 비교가 끝나면 정보를 신경망으로 다시 공급(back)

step 7. 이 정보는 가중치로 가서 가중치가 업데이트 됨

 

=> 기본적으로 이 단순한 신경망에서 통제 할 수 있는건 가중치

=> 비용함수가 최소가 될 때까지 반복

=> 가중치들이 조정되었고, 학습된 데이터 세트에 대한 최적 가중치를 찾고, 테스트 혹은 응용 단계로 진행 할 준비가 됨

=> 이러한 전체 과정을 오차역전파 라고 명칭

 

 

 

 

5. 경사하강법

 

Single Layer Feed Forward  or 퍼셉트론

C : 비용함수를 의미

 

어떻게 비용함수를 최소화 할까?

 

case 1 : 브루트포스 접근법은 가능한 모든 가중치들을 가지고 뭐가 가장 잘 동작하는지 모니터링하는 방법 (몹시 비효율적...차원의 저주에 빠진다고 함.. )

case 2: 경사하강법을 사용, 

 

경사하강법을 위한 1차원 예시 [출처 : SuperDataScience]
경사하강법을 위한 2차원 예시 [출처 : SuperDataScience]
경사하강법을 위한 3차원 예시 [출처 : SuperDataScience]

 

지그재그 모양으로 이동하고 점점 최솟값에 가까워지고 비용함수의 최솟값을 향하고 있는 모습을 관찰.

 

 

 

확률적 경사하강법(SSD)

:  경사하강법에서 알아둘 점은 볼록한 형태의 비용 함수가 필요하다는 점이다. 볼록하지 않으면 최솟값이 아니라 극소값을 찾을 수 있음. 이를 방지하고자 확률적 경사 하강법을 사용.

 

일반 경사 하강법(배치 경사 하강법)과 확률적 경사 하강법의 차이

 

* 배치 경사 하강법은 모든 행이 신경망에 연결될 때, 샘플로부터 전체 배치를 가져와 한꺼번에 적용하고 가중치 조정

1. 배치 경사 하강법의 특징은 결정론적인 알고리즘 이라는 점

2. 같은 가중치로 시작하는 한 같은 반복을 거치고 가중치가 업데이트 되는 과정도 같음,

 

* 확률적 경사 하강법은 행을 하나씩 가져와서 신경망에 연결하고 가중치를 조정,

1. 확률적 경사 하강법의 특징은 확률적 알고리즘 이라는 점(무작위)

2. 가능한 무작위로 행을 선택, 신경망을 확률적 방식으로 업데이트 하기 때문에 같은 가중치로 시작해도 다른 과정과 반복을 거쳐 결과가 나옴

 

* 두 방식의 중간에 위치한 미니 배치 경사 하강법도 있음.

 

 

 

6. 역전파

 

역전파의 큰 이점으로는 역전파 과정 동안에 동시에 모든 가중치를 조정할 수 있고, 이는 신경망의 어떤 가중치로부터 각 오차가 파생되었는지를 알 수 있다는 점이다. => 역전파  알고리즘의 핵심 원리

 

확률적 경사하강법을 이용한 ANN을 학습시키는 방법

 

step 1. 가중치를 0에 가까운 작은 숫자로 무작위로 초기화 -> 그래야 순전파,역전파가 진행 되는 동안 오차와 비용함수가 최소화되어 가중치가 조정됨

 

step 2. 데이터 세트의 첫 행에 대한 첫 번째 관측치를 입력. 각각의 변수는 하나의 입력 노드이고 기본적으로 열들을 입력 노드에 넣음.

 

 step 3. 순전파, 왼쪽에서 오른쪽으로 진행. 가중치에 의해 각 신경의 활성화 영향이 제한되는 방향으로 신경들이 활성화된다. 가중치는 각 신경의 활성화가 얼마나 중요한지 결정하고 예측결과인 y hat을 얻을 때 까지 활성화가 전파된다. 

 

step 4. y hat을 얻고나면, 실제값과 예측값을 비교해 생성된 오차를 측정

 

step 5. 오차는 역전파 되어 가중치가 오차에 기여한 정도에 따라 가중치를 업데이트 함, 역적파 알고리즘의 구조로 이를 계산 할 수 있으며, 학습률은 가중치를 얼마나 업데이트 할 지 결정한다. 학습률은 파라미터로 신경망 내에서 조절이 가능함.

 

step 6. 각 관측치마다 1~5단계를 반복하는 것을 강화학습이라고 함(확률적 경사하강법). 관측 배치의 배치 별로 단계를 반복해 가중치를 업데이트 하면 배치학습 또는 배치 경사 하강법 또는 미니 배치 경사 하강법이라고 할 수 있음

 

step 7. 전체 학습 세트가 인공 신경망을 통과하면 한 번의 에포크가 마친것이고, 이 후 더 많은 에포크를 반복.

이후 신경망 스스로 훈련, 발전하여 비용함수가 최소가 될 수 있도록 지속적으로 스스로를 조정하도록 한다.

 

 

 

 

 

'스터디 > AI' 카테고리의 다른 글

[이론] 순환신경망 이론 RNN  (0) 2023.01.27
[이론] 컨볼루션 신경망 이론 CNN  (2) 2023.01.27
[TensorFlow] 텐서플로우 2.0 소개  (0) 2023.01.19
AI 커리어에 대한 조언  (0) 2023.01.12
[Imple]YoLov5 모델 학습해보기  (0) 2022.05.18