AI/MachineLearning

He 초기화 방법

향식이 2021. 7. 19. 22:12

He 초기화 방법은 활성화 함수로 ReLU를 쓸 때 활성화 결괏값들이 한쪽으로 치우치는 문제를 해결하기 위해 나온 방법이다.

 

He 초기화 방법은 앞 레이어의 노드가 n개일 때 표준 편차가 \sqrt{2} / \sqrt{n}인 분포를 사용하는 것이다. 즉 표준 정규 분포를 입력 개수 절반의 제곱근으로 나누어주면 된다.

 

Xavier 초기화 방법은 표준 편차가 1 / \sqrt{n}이라고 한다. ReLU는 음의 영역에 대한 함숫값이 0이라서 더 넓게 분포시키기 위해 \sqrt{2}배의 계수가 필요하다고 이해할 수 있다.

 

import numpy as np
from visual import *

np.random.seed(100)
    
def relu(x):
    result = np.maximum(0,x)
    return result

'''
1. 입력 데이터를 정의하세요.

2. 가중치 초깃값 설정 부분을 왼쪽 설명에 맞게 바꿔보세요.
   Numpy의 연산 메서드를 사용할 수 있습니다.
   
3. relu를 통과할 값인 'a_relu'를 정의하세요.
'''

def main():
    
    x_relu = np.random.randn(1000,100)
    
    node_num = 100
    hidden_layer_size = 5
    
    activations_relu = {}
    
    for i in range(hidden_layer_size):
        if i != 0:
            x_relu = activations_relu[i-1]
            
        w_relu = np.random.randn(100,100) * np.sqrt(2/node_num)
        
        a_relu = np.dot(x_relu, w_relu)
        
        z_relu = relu(a_relu)
        
        activations_relu[i] = z_relu
        
    Visual(activations_relu)
    
    return activations_relu    

if __name__ == "__main__":
    main()

 

출처: 앨리스 교육

반응형