독서 리마인더/밑바닥부터 시작하는 딥러닝

[밑바닥부터 시작하는 딥러닝] 8장

hwijin97 2021. 5. 13. 23:25

정확도를 높일 수 있는 기술 :

앙상블 학습, 학습률 감소, 데이터 확장 등

데이터 확장 : 기존 입력데이터를 알고리즘을 동원해 인위적으로, 회전, flip, crop 등 하여 이미지를 확장시키는 방법.

층을 깊게 하는이유 :: 이점 : 깊은 신경망은 깊지않은 신경마보다, 적은 매개변수로 같거나 높은 수준의 표현력을 지닌다. ex) 5x5 합성곱 1회, 3x3 합성곱 2회 -> 매개변수 수 : 25개 / 2 * 3 * 3 = 18 개, 하지만 같은 크기 영역을 대표한다.

작은 필터를 겹쳐 깊은 신경망을 만들때 장점 : 매개변수 수를 줄여 넓은 수용 영역(receptive field)를 소화 가능하다. + 층을 거듭하면서 ReLU의 활성화 함수를 합성곱 계층에 끼움으로 신경망에 '비선형'힘을 가하고 가해, 더 복잡한 것도 표현 가능해진다.

 

VGG : 합성곱 계층과 풀링 계층으로 구성되는 '기본'적인 CNN

다만 비중있는 층(합성곱, 완전연결)을 모두 16, 19층으로 심화함

3x3의 작은 필터를 사용한 합성곱 계층을 연속으로 거친다.

합성곱 계층을 2~4회 연속하고, 풀링 계층을 두어 크기를 절반으로 줄이는 처리를 반복함.

마지막 완전 연결을 통과시켜 결과를 출력함.

 

GoogLeNet : 보통CNN구조와 비슷하지만 세로 방향 깊이 뿐아니라, 가로 방향도 깊다는 점이 특징이다.

가로방향에 '폭을 두어 앞계층 -> 1x1 합성곱 | 3x3 합성곱 | 5x5 합성곱 | 3x3 최대 풀링 -> 필터 결합 의 인셉션 구조를 지닌다.

1x1 합성곱 연산은 채널 쪽으로 크기를 줄이는 것으로, 매개변수 제거와 고속 처리에 기여한다.

 

ResNet : 층이 지나치게 깊으면 학습이 오히려 잘 안되는 경우가 발생한다.

스킵 연결(skip connection) : x -> 합성곱 -> ReLU - > 합성곱 -> F(x) 이지만, 입력 데이터를 합성곱 계층을 건너 뛰어 출력에 바로 더하는 구조가 추가되어 x -> F(x) + x 를 지닌다.

스킵연결은 입력을 '그대로' 흘리는 것으로, 역전파 때도 상류의 기울기를 그대로 하류로 보낸다. '그대로'흘리게 되면, 기울기가 작아지거나 지나치게 커질 걱정없이 앞층에 '의미있는 기울기'가 전해지리라 기대할 수 있다.

 

처리시간 : 대부분의 시간을 합성곱 계층에서 소요하고, 이 연산을 고속으로 처리하는 것이 딥러닝의 과제이다.

GPU : Nvidia의 CUDA기반 cuDNN을 통해서도 가속 가능하다.

분산 학습 : 여러 GPU를 통해 tenserflow나 CNTK(computational network toolkit)에서 분산 학습을 통해, 놀라운 효과를 보이고 있다.

연산 정밀도, 비트 줄이기 : 메모리 용량 및 버스 대역폭 등이 고속화 병목이 된다.

신경망의 견고성으로, 높은 정밀도를 요구하지 않기 때문에, 실수를 표현하는데 64비트 배정밀도, 보다 32비트 단정밀도, 보다, 16비트 반정밀도를 사용해도 학습에 문제가 없다고 알려져 있다.

 

활용 ::

사물 검출 : R-CNN(regions with convolutional neural network) | 후보 영역 추출 + CNN 특징 계산

분할 : 이미지를 픽셀 수준으로 분할 FCN(fully convolutional network)

사진 캡션 생성 : NIC(neural image caption) RNN(recurrent neural network)으로 이루어짐.

이미지 생성 : DCGAN(deep convolutional gereative adversarial network) -> 자율학습

Deep Q Network : 강화학습으로 에이전트가 환경에 맞게 행동하고 행동으로 환경이 변화하는 틀에서, 에이전트는 보상을 받아 더 나은 보상을 받는 쪽으로 에이전트의 행동지침을 바로잡는 기술,