4주 차의 목표는 다양한 딥러닝 신경망 구조에 대해 알아본다.
전이 학습에 대해 배운다.
CNN과 전이 학습을 직접 적용해본다.
1. 다양한 신경망 구조
이중에 합성곱 신경망(CNN), 순환 신경망(RNN), 생성적 적대 신경망(GAN)에 대하여 알아보도록 하겠다.
2. 합성곱 신경망 CNN
- 합성곱은 아주 간단하다 밑의 사진의 필터를 정해서 스트라이드에 따라서 이동하며 곱해준 값을 더해서 결과값을 출력해주면 된다. 스트라이드란 이동하는 간격을 의미한다.
이렇게 합성곱 연산을 하게 되면 출력 값인 특성 맵의 크기는 줄어들 수밖에 없게 되는데 이것을 방지하고 싶다면 패딩 또는 마진을 입력값에 주고 스트라이드를 1로 설정하게 되면 같은 크기의 특성 맵을 얻어 낼 수 있다.
- 합성곱 신경망의 구성은 합성곱 계층 + 활성화 함수 + 풀링을 반복하며 점점 작아진다.
여기서 풀링이라는 것이 있는데 여러 가지 종류 중 두 가지 max pool, average pool은 밑의 사진과 같다
이렇게 풀링 과정이 끝나고 데이터가 소팅이 되어도 이 데이터는 2차원이고 완전 연결 계층은 1차원이므로 연산이 불가능해 평탄화 계층(Flatten layer)을 사용하여 1차원으로 바꾸는 작업을 해야 한다.
이렇게 작업하고 완전 연결 계층과 활성화 함수의 반복을 반복 진행해 노드의 개수를 축소시키다가 마지막에 softmax 함수를 통과( 모든 경우의 수의 합이 1이 되게 만드는 함수 )를하여 출력 값을 뽑아내게 된다.
- 합성곱 신경망의 활용 예
물체 인식(Object Detection) - 말 그대로 물체를 인식 얼굴인지 동물인지 물체를 따라가며 인식하는 기술
이미지 분할(Segmentation) - 인물과 배경 또는 객체와 객체를 각각 분리하여 클래스화 시키는 방법
자율주행 물체인식 - 사람과 차 차선 및 장애물들을 복합적으로 분석하여 비교하고 알아냄
자세 인식(Pose Detection) - 사람을 먼저 인식하고 각 부위의 위치도 따로 파악해 자세를 인식할 수 있음
화질 개선(Super Resolution) - 이미지 각 부분을 인식하여 더 고화질의 영상을 추론함
Style Transfer - 이미지의 각 요소를 파악하여 다른 요소로 변경
사진 색 복원(Colorization) - 이미지의 각 요소를 파악하여 예측되는 색깔 값으로 복원
- 합성곱 신경망의 종류
* 종류에는 종류의 나열로 갈음하겠음
AlexNet (2012) - 의미 있는 성능을 낸 첫 번째 합성곱 신경망
GGNet (2014) - 간단한 방법론으로 좋은 성적을 내서 유명해짐, 파라미터의 개수가 많고 모델의 깊이가 깊어 처음 모델 설계할 때 전이 학습 등을 통해서 가장 먼저 테스트하는 모델
GoogLeNet(=Inception V3) (2015) - 사람이 보는 것과 비슷한 구조로 볼 수 있게 만들어준 구조 VGGNet보다 신경망이 깊어졌음에도 사용된 파라미터는 절반 이하
ResNet (2015) - Residual block을 이용하여 성능 개선을 한 신경망
3. 순환 신경망 RNN
- 순환 신경망은 은닉층이 순차적으로 연결되어 순환구조를 이루는 인공신경망의 한 종류이다.
음성, 문자 등 순차적으로 등장하는 데이터 처리에 적합한 모델로 알려져 있다.
- 길이에 관계없이 입력과 출력을 받아들일 수 있는 구조이다.
- 주식이나 암호화폐 시세 예측 그리고 챗봇 등의 모델도 만들 수 있다.
3. 생성적 적대 신경망 GAN
- 서로 적대하는 2가지 모델을 동시에 사용하는 기술, 기존 강의에서는 적대라고 표현하였지만 두 개가 싸우는 느낌은 나지 않았으므로 서로 경쟁하는 또는 반대되는 이라고 이해하면 되겠다.
여기서 재밌는 것은 Generator, Discriminator 생성자와 식별자를 같이 학습시키면서 epoch이 지남에 따라 생성자는 더 정교한 거짓을 만들고 식별자는 그 정교해진 거짓데이터를 식별해내는 것을 반복하면서 기능의 향상을 빠르게 볼 수 있다.
- GAN을 사용한 예시
* CycleGAN
* StarGAN
* CartoonGAN
* DeepFake
* BeautyGAN
* Toonify Yourself
설명내용은 짧았지만 아주 흥미롭고 많이 사용해야 될 기술로 보인다.
4. 전이 학습 Transfer Learning
- 전이 학습은 미리 학습시킨 모델을 가져와 새로운 데이터셋에 대해 다시 학습시키는 방법이다.
이는 사람이 언어를 배울 때 한 가지 언어를 먼저 배운 상태면 다른 언어를 학습할 때도 빠르게 학습할 수 있다는 점에 착안해서 고안된 방법으로 실제로도 효과가 좋아 실무에도 많이 사용된다.
'DevLog' 카테고리의 다른 글
[PYTHON] path 환경 변수 설정 (0) | 2022.02.10 |
---|---|
[내일 배움캠] 깃허브 Profile 만들기 & 꾸미기 (0) | 2022.01.21 |
[WIL]머신러닝 - 3주차 강의 개발일지 (0) | 2022.01.11 |
[WIL]머신러닝 - 2주차 강의 개발일지 (0) | 2022.01.11 |
[WIL]머신러닝 - 1주차 강의 개발일지 (0) | 2022.01.10 |