스마트 인재개발원/머신러닝 & 딥러닝

(광주인공지능학원) CNN 기초공부하기 2

앨런튜링_ 2021. 8. 3. 12:49

Conv2D ( filters = 32,
kernel_size = (5, 5),  padding='valid',  input_shape=(28, 28, 1),  activation='relu‘,
strides = (2, 2) )
첫번째 인자 : Convolution 필터의 수.
두번째 인자 : Convolution 커널의 (행, 열).

Conv2D ( filters = 32,
kernel_size = (5, 5),  padding='valid',  input_shape=(28, 28, 1),  activation='relu‘,
strides = (2, 2) )
padding : 경계 처리 방법을 정의.
‘valid’ : 유효한 영역만 출력. 따라서 출력 이미지 사이즈는
입력 사이즈보다 작다.
‘same’ : 출력 이미지 사이즈가 입력 이미지 사이즈와 동일하다. (광주인공지능학원)

Conv2D ( filters = 32,
kernel_size = (5, 5),  padding='valid',  input_shape=(28, 28, 1),  activation='relu‘,
strides = (2, 2) )
input_shape : 샘플 수를 제외한 입력 형태를 정의.
모델에서 첫 레이어일 때만 정의.(행, 열, 채널 수)로 정의.
흑백영상인 경우에는 채널이 1이고, 컬러(RGB)영상인 경우에는  채널을 3으로 설정.

Conv2D ( filters = 32,
kernel_size = (5, 5),  padding='valid',  input_shape=(28, 28, 1),  activation='relu‘,
strides = (2, 2) )
input_shape : 샘플 수를 제외한 입력 형태를 정의.
모델에서 첫 레이어일 때만 정의.(행, 열, 채널 수)로 정의.
흑백영상인 경우에는 채널이 1이고, 컬러(RGB)영상인 경우에는  채널을 3으로 설정.
Conv2D ( filters = 32,
kernel_size = (5, 5),  padding='valid',  input_shape=(28, 28, 1),  activation='relu‘,
strides = (2, 2) )
activation : 활성화 함수 설정.
‘relu’
‘sigmoid’
‘softmax’
‘linear’

Conv2D ( filters = 32,
kernel_size = (5, 5),  padding='valid',  input_shape=(28, 28, 1),  activation='relu‘,
strides = (2, 2) )
stride : stride 크기 지정 (행, 열).

Conv2D ( filters = 1,
kernel_size = (2, 2),  padding=‘same',  input_shape=(3, 3, 1) )

Conv2D ( filters = 3,
kernel_size = (2, 2),  padding=‘same',  input_shape=(3, 3, 1) )

Conv2D ( filters = 1,
kernel_size = (2, 2),  padding=‘same',  input_shape=(3, 3, 3) )

Conv2D ( filters = 2,
kernel_size = (2, 2),  padding=‘same',  input_shape=(3, 3, 3) )(광주인공지능학원)

MaxPooling2D ( pool_size = (2, 2), stride = (2, 2) )
pool_size : max pooling 크기 지정 (행, 열).
stride : stride 크기 지정 (행, 열).

Flatten ( )
1차원으로 변경하는 함수

Keras활용 고양이, 강아지 분류 실습

 

과대적합 피하는 방법 – 데이터 확장.
광주인공지능학원 이명훈연구원님 설명에 의하면 과대적합이 일어나는 이유 중 하나는 훈련데이터가 부족하기 때문이다.

훈련 데이터가 충분히 많다면 과대적합을 줄일 수 있다.

데이터 확장이라 훈련 데이터를 다양하게 변형하여 변형된 새로운 훈련  데이터처럼 사용함으로써 마치 훈련 데이터 수가 늘어난 효과를 얻는  것이다.

과대적합 피하는 방법 

rotation_range = 360 : 0° 에서 360° 사이에서 회전
width_shift_range = 0.1 : 전체에서 10% 내외 수평이동
height_shift_range = 0.1 : 전체에서 10% 내외 수직이동
shear_range = 0.5 : 0.5라디안 내외 시계반대방향으로 변형
zoom_range = 0.3 : 0.7~1.3배로 축소/확대
Horizontal_flip = True : 수평방향으로 뒤집기
Vertical_flip = True : 수직방향으로 뒤집기

 

기타 성능 개선
광주인공지능학원 이명훈연구원님 설명에 의하면
가중치 초깃값 설정 (Xavier초깃값, He초깃값)
앞 계층의 노드를 이용해 표준편차가 1 / √n인 정규분포로 초기화하는 방법

배치정규화(Batch Normalization)
활성화 함수 앞 또는 뒤에서 평균 0, 분산 1로 정규화하는 방법
각 층에서 값들이 적당히 분포되도록 조정하는 것

 

전이학습
광주인공지능학원 이명훈연구원님 설명에 의하면
전이학습이란 다른 데이터 셋을 사용하여 이미 학습한 모델을 유사  한 다른 데이터를 인식하는데 사용하는 기법이다.
이 방법은 특히 새로 훈련시킬 데이터가 충분히 확보되지 못한 경우  에 학습 효율을 높여준다.
사전학습모델을 이용하는 방법은 특성 추출(feature extraction)
방식과 미세조정(fine-tuning) 방식이 있다

 

전이학습 - 특성추출방식

광주인공지능학원 이명훈연구원님 설명에 의하면
컨볼류션 베이스 부분만 재사용하는 이유는 이 부분은 상당히 일반  적인 학습정보를 포함하고 있기 때문이다.
컨볼류션 계층에서도 재사용할 수 있는 정보의 수준은 몇 번째 계층  인지에 따라 다르다. 모델의 앞 단의 계층일수록 에지, 색상, 텍스처  등 일반적인 정보를 담는다.
반면에 뒷 부분의 깊은 계층일수록 추상적인 정보를 담는다 (예를 들  어 고양이 귀, 강아지 귀 등).
새롭게 분류할 클래스의 종류가 사전 학습에 사용된 데이터와 특성
이 매우 다르면, 컨볼류션 베이스 전체를 재사용해서는 안되고 앞단  의 일부 계층만을 재사용해야 한다.

전이학습 미세조정 방식
광주인공지능학원 이명훈연구원님 설명에 의하면
모델 베이스 중 상위 몇개의 계층은 전결합층 분류기와 함께 새로 학  습시키는 방식이다.
최종 분류기의 계수가 랜덤하게 초기화 되어 있으므로 이를 먼저 학  습시키며 이때 사전학습 모델의 컨볼류션 베이스를 초기에는 고정해  야 한다.
먼저 분류기를 계수를 학습시킨 다음에 (즉, 이 동안은 미세조정을  하지 않도록 상위계층의 계수를 고정시켜 두고), 그 이후에 미세조정  을 해야 한다.
처음부터 베이스 상위계층의 계수를 같이 훈련시키면 분류기에서 발  생하는 큰 에러 값으로 인해, 사전 학습된 정보가 많이 손실된다

사전 학습된 기본 네트워크 상단에 새로운 네트워크를 추가한다.
기본 네트워크를 고정시킨다.
새로 추가한 부분을 학습시킨다.
기본 계층중에 학습시킬 상위 부분의 고정을 푼다
고정을 푼 계층과 새로 추가한 계층을 함께 훈련시킨다.

미세 조정을 천천히 수행하기 위해서 느린 학습 속도를 선택한다. 갑
자기 큰 변화를 주면 사전 학습된 내용이 훼손되기 때문이다.

Keras활용 고양이, 강아지 분류 전이학습 실습

"스마트인재개발원에서 진행된 수업내용입니다"

https://www.smhrd.or.kr/

 

스마트인재개발원

4차산업혁명시대를 선도하는 빅데이터, 인공지능, 사물인터넷 전문 '0원' 취업연계교육기관

www.smhrd.or.kr