본문 바로가기
AI-driven Methodology/Artificial Intelligence

[AI] Feed Forward ∙ One Hot Encoding ∙ Softmax

by goatlab 2022. 7. 17.
728x90
반응형
SMALL

Feed Forward

 

신경망의 입력층 (input layer)으로 데이터가 입력되고, 1개 이상으로 구성되는 은닉층 (hidden layer)을 거쳐서 출력층(output layer)으로 출력 값을 내보내는 과정이다.

 

import numpy as np

# 활성화함수 sigmoid
def sigmoid(x):
    return 1 / (1 + np.exp(-x))
    
input_data = np.array([1, 2])    # 입력데이터
target_data = np.array([1])      # 정답데이터

input_nodes = 2    # 입력노드
hidden_nodes = 3   # 은닉노드
output_nodes = 1   # 출력노드

W2 = np.random.rand(input_nodes, hidden_nodes)
b2 = np.random.rand(hidden_nodes)

W3 = np.random.rand(hidden_nodes, output_nodes)
b3 = np.random.rand(output_nodes)

print("W2 = ", W2, ", W2.shape = ", W2.shape)
print("b2 = ", b2, ", b2.shape = ", b2.shape)
print("W3 = ", W3, ", W3.shape = ", W3.shape)
print("b3 = ", b3, ", b3.shape = ", b3.shape)
W2 =  [[0.28344889 0.85330606 0.15144335]
 [0.48588835 0.33458854 0.41656901]] , W2.shape =  (2, 3)
b2 =  [0.47258453 0.26064422 0.50579538] , b2.shape =  (3,)
W3 =  [[0.24779251]
 [0.05628677]
 [0.63474067]] , W3.shape =  (3, 1)
b3 =  [0.96095362] , b3.shape =  (1,)
def feed_forward(xdata):
    Z2 = np.dot(xdata, W2) + b2
    
    print("[feed_forward function]\n")
    print("Z2 = ", Z2)
    
    A2 = sigmoid(Z2)
    
    print("A2 = ", A2)
    
    Z3 = np.dot(A2, W3) + b3
    
    print("Z3 = ", Z3)
    
    Y = A3 = sigmoid(Z3)
    
    print("Y = ", Y, ", A3 = ", A3)
    
    loss = np.sum((target_data-Y)**2) / (1)
    
    print('current loss val = ', loss)
    print("\n[feed_forward function]\n")
        
    return loss
    
loss_val = feed_forward(input_data)
[feed_forward function]

Z2 =  [1.72781011 1.78312735 1.49037675]
A2 =  [0.84913209 0.8560826  0.81613481]
Z3 =  [1.73758227]
Y =  [0.85037971] , A3 =  [0.85037971]
current loss val =  0.022386231683567077

[feed_forward function]

 

One Hot Encoding

 

정답을 표현하는 방식으로서, 정답에 해당하는 리스트의 인덱스 값에는 1을 넣고, 나머지 인덱스에는 모두 0을 넣어 정답을 표현하는 기법이다.

 

Softmax

 

소프트맥스 (softmax) 함수는 다음과 같이 정의된다. 여기서 K는 출력층의 노드 개수, Pj는 그 중 j번째 출력임을 나타낸다.

 

 

소프트맥스 (softmax) 함수 출력은 0.0 ~ 1.0이며, 또한 소프트맥스 함수 출력의 총 합은 1이 되는 것을 알 수 있다. 출력 총합이 1이 되는 것은 소프트맥스 함수의 중요한 성질이며, 이 성질로 인해서 소프트맥스 함수 출력을 확률로 해석할 수 있다.

728x90
반응형
LIST

'AI-driven Methodology > Artificial Intelligence' 카테고리의 다른 글

[AI] 다변수 선형 회귀  (0) 2022.07.17
[AI] Basic Architecture  (0) 2022.07.17
[AI] 로지스틱 회귀 (Logistic Regression)  (0) 2022.07.10
[AI] 수치 해석  (0) 2022.07.10
[AI] 러닝 아키텍처  (0) 2022.07.09