본문 바로가기

* [R_Python] 데이터분석 정리/[Python] 딥러닝

[핸즈온] 인공신경망 규제 사용

ㅁ 규제 사용

  - 과대적합을 피하기 위함

 

(1) $l_{1}$과 $l_{2}$ 규제

 

ㅁ $l_{1}$과 $l_{2}$ 사용

- $l_{2}$ 규제 : 연결 가중치 제한

- $l_{1}$ 규제 : (많은 가중치들을 0으로 하는) 희소모델을 만듦

 

ㅁ 파이썬으로 keras의 l2(), l1() 함수 사용

layer = keras.layers.Dense(100, activation = "elu",
        					kernel_initializer = "he_normal",
                            kernel_regularizer = keras.regularizers.l2(0.01))

 

 

ㅁ 일반적으로 모든 은닉층에 동일한 활성화 함수/초기화 전략/규제를 적용 하는 경우 多

- 반복문 사용하도록 코드 리팩터링

- functiools.partial() 함수 사용

 

from functools import partial

RegularizedDense = partial(keras.layers.Dense,
							activation="elu",
                            kernel_initializer = "he_normal",
                            kernel_regularizer = keras.regularizers.l2(0.01))
                      
model = keras.models.Sequential([
		keras.layers.Flaten(input_shape=[28,28]),
        RegularizedDense(300),
        RegularizedDense(100),
        RegularizedDense(10, activation="softmax",
        				kernel_initializer="glorot_uniform")
 		])
        

 

 

 

(2) 드롭아웃

(3) 맥스-노름 규제