Notice
Recent Posts
Recent Comments
Link
12-20 02:58
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

AI 전문가가 되고싶은 사람

인공 뉴런 ( 퍼셉트론 이해하기 ) 본문

머신러닝 교과서

인공 뉴런 ( 퍼셉트론 이해하기 )

Kimseungwoo0407 2024. 8. 3. 18:00

1. 인공 뉴런

- AI를 설계하기 위해 생물학적 뇌가 동작하는 방식을 이해하려는 시도 -> 맥컬록-피츠 뉴런 (MCP)

- MCP 뉴런 모델을 기반으로 퍼셉트론 학습 개념을 발표했고 퍼셉트론 규칙에서 자동으로 최적의 가중치를 학습하는 알고리즘 제안

 

1.1 인공 뉴런의 수학적 정의

- 0과 1 두개의 클래스가 있는 이진 분류 작업으로 볼 수 있음.

- 입력 값 x와 이에 상응하는 가중치 벡터 w의 선형 조합으로 결정 함수를 정의.

 

\( z = w_1 x_1 + w_2 x_2 + \cdots + w_m x_m \)

 

단위 계단 함수를 변형하여 임계 값 θ보다 크면 클래스 1로 예측하고, 그렇지 않으면 0으로 예측

\[ \sigma(z) = \begin{cases} 1 & \text{if } z \geq \theta \\ 0 & \text{otherwise} \end{cases} \]

 

z - θ >= 0으로 변환하여 z 식에 절편 유닛 b = - θ를 정의하게 되면

 

\[ \sigma(z) = \begin{cases} 1 & \text{if } z - \theta \geq 0 \\ 0 & \text{otherwise} \end{cases} \]

\[ z = w_1 x_1 + w_2 x_2 + \cdots + w_m x_m + b \]

위와 같은 형태가 되고 최종 입력 z가 0보다 클 경우 1 그외에 0이 된다

\[ \sigma(z) = \begin{cases} 1 & \text{if } z \geq 0 \\ 0 & \text{otherwise} \end{cases} \]

 

퍼셉트론 결정 함수로 최종 입력이 이진 출력으로 압축되는 방법과 이를 사용하여 선형 결정 경계로 분리가 가능한 두 개의 클래스 사이를 구별하는 방법을 보여준다.

 

1.2 퍼셉트론 학습 규칙

- 환원 주의 접근 방식 : 복잡하고 추상적인 개념을 더 단순한 요소로 명확하게 정의할 수 있다는 믿음이다.

- 즉, 출력을 내거나 내지 않는 두 가지 경우만 있다.

1. 가중치를 0 또는 랜덤한 작은 값으로 초기화한다.

2. 각 훈련 샘플에서 다음 작업을 한다.

    a. 출력 값을 계산한다.

    b. 가중치와 절편을 업데이트한다.

 

여기에서 출력 값은 앞서 정의한 단위 계단 함수로 예측한 클래스 레이블이다.

 

가중치 벡터 w에 있는 개별 가중치와 절편 유닛이 동시에 업데이트 되는 것을 다음과 같이 쓸 수 있다.

\[ w_j := w_j + \Delta w_j \] \[ b := b + \Delta b \]

 

업데이트 값('델타')는 다음과 같이 계산된다.

\[ \Delta w_j = n \left( y^{(i)} - \hat{y}^{(i)} \right) x_j^{(i)} \] \[ \Delta b = n \left( y^{(i)} - \hat{y}^{(i)} \right) \]

 

절편 유닛과 달리 각 가중치는 데이터셋에 있는 특성에 대응된다. 이 특성은 위에서 정의된 업데이트 값을 결정하는 데 사용된다. 여기에서 n은 학습률이다 y^(i)는 i번째 훈련 샘플의 진짜 클래스 레이블이고, y(hat)^(i)는 예측 클래스 레이블이다.

* 가중치 벡터의 모든 가중치와 절편 유닛을 동시에 업데이트한다는 점이 중요하다.

(1) \( y^{(i)} = 0 \), \( \hat{y}^{(i)} = 0 \), \( \Delta w_j = n (0 - 0) x_j^{(i)} = 0 \), \( \Delta b = n (0 - 0) = 0 \)

(2) \( y^{(i)} = 1 \), \( \hat{y}^{(i)} = 1 \), \( \Delta w_j = n (1 - 1) x_j^{(i)} = 0 \), \( \Delta b = n (1 - 1) = 0 \)

위 예시는 퍼셉트론이 클래스 레이블을 정확히 예측한 두 경우이다. 정확히 예측했기 때문에 업데이트 값은 0이다.

 

잘못 예측했을 때는 가중치를 양성 또는 음성 타깃 클래스 방향으로 이동시킨다.

(3) \( y^{(i)} = 1 \), \( \hat{y}^{(i)} = 0 \), \( \Delta w_j = n (1 - 0) nx_j^{(i)} = nx_j^{(i)} \), \( \Delta b = n (1 - 0) = n \)

(4) \( y^{(i)} = 0 \), \( \hat{y}^{(i)} = 1 \), \( \Delta w_j = n (0 - 1) nx_j^{(i)} = -nx_j^{(i)} \), \( \Delta b = n (0 - 1) = -n \)

 

 

곱셉 계수 역할을 하는 특성 값을 더 잘 이해해보자.

\( y^{(i)} = 1 \), \( \hat{y}^{(i)} = 0 \), and \( n = 1 \)

 

xj^(i) 값이 1.5일 때 이 샘플을 0으로 잘못 분류했다고 가정 -> 이때 가중치가 2.5만큼 증가 되어 다음번에 이 샘플을 만났을 때 최종 입력이 더 큰 양수가 된다. -> 단위 계단 함수의 임계 값보다 커져 샘플이 클래스 1로 분류될 가능성 높아짐

\[ \Delta w_j = (1 - 0) \cdot 1.5 = 1.5 \] \[ \Delta b = (1 - 0) = 1 \]

 

가중치 업데이트는 xj^(i) 값에 비례한다. 2를 0으로 잘못 분류했다면 이 샘플을 다음번에 올바르게 분류하기 위해 결정 경계를 크게 움직인다.

\[ \Delta w_j = (1 - 0) \cdot 2 = 2 \] \[ \Delta b = (1 - 0) = 1 \]

 

 

선형 구분 가능한 데이터셋과 그렇지 못한 클래스의 예

따라서 두 클래스를 선형 결정 경계로 나눌 수 없다면 훈련 데이터셋을 반복할 최대 횟수를 지정하고 분류 허용 오차를 지정할 수 있다. 그렇지 않으면 가중치 업데이트를 멈추지않는다.

 

 

핵심 내용

퍼셉트론이 샘플 x를 입력으로 받아 절편 b와 가중치 w를 연결하여 최종 입력을 계산하는 방법을 보여준다. 그 다음 최종 입력은 임계 함수로 전달되어 샘플의 예측 클래스 레이블인 0 또는 1의 이진 출력을 만든다. 학습 단계에서 이 출력을 사용하여 예측 오차를 계산하고 가중치와 절편 유닛을 업데이트한다.