일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- nlp
- 구글 킥스타트
- 파이썬
- google coding competition
- 동적프로그래밍
- BFS
- 알고리즘
- 코딩 테스트
- 리눅스
- 순열
- 동적 프로그래밍
- OS
- 코딩테스트
- 네트워크
- 그래프
- linux
- DFS
- 코딩
- 프로그래밍
- dp
- CSS
- 프로그래머스
- 백준
- kick start
- 킥스타트
- 딥러닝
- 브루트포스
- PYTHON
- AI
- 운영체제
- Today
- Total
오뚝이개발자
[CH8] 딥러닝 본문
- 딥러닝이란 층을 깊게 한 신경망
데이터 확장(data augmentation)
- 입력 이미지(훈련 이미지)를 알고리즘을 동원해 '인위적'으로 확장한 것
- 데이터가 적을 때 효과적인 수단
- 간단하지만 정확도 개선에 효과적
- 회전, 이동에 의한 변형
- 이미지 일부를 잘라내는 crop
- 좌우를 뒤집는 flip
- 크기변화(scale), 밝기수정 등.
층을 깊게 하는 것의 이점
- ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대규모 이미지 인식 대회에서 최근 상위를 차지한 기법 대부분은 딥러닝 기반이며 그 경향은 신경망을 더 깊게 만드는 방향으로 가고 있다.(층의 깊이에 비례해 정확도가 좋아진다.)
- 깊은 신경망은 그렇지 않은 경우보다 적은 매개변수로 같은(혹은 그 이상의) 표현력 갖출 수 있다.
ex) 5*5 합성곱 연산은 3*3 합성곱 2번으로 대체 가능. 전자는 매개변수 수가 25(5*5)개, 후자는 18(2*3*3)개
- 층을 거듭하면서 ReLU 등의 활성화 함수를 합성곱 계층 사이에 끼움으로써 신경망의 표현력이 개선됨.
- 활성화 함수가 신경망에 '비선형성'을 부여해 더 복잡한 것도 표현 가능
- 학습해야 할 문제를 계층적으로 분해해 더 단순한 문제로 대체 가능
- 예컨대, '개'를 인식하는 문제를 얕은 신경망에서 해결하려면 합성곱 계층은 개의 특징 대부분을 '한 번에' 이해해야함. 하지만 깊은 합성곱 계층 신경망에선 처음 층은 에지 학습에 전념하여 효율적으로 학습 가능. 에지의 패턴은 개라는 패턴보다 구조가 훨씬 단순.
- 정보를 계층적으로 전달할 수 있다.
- 에지를 추출한 층의 다음 층은 에지 정보를 쓸 수 있고, 더 고도의 패턴을 효과적으로 학습 가능.
대표적인 신경망
1. VGG
- 합성곱 계층, 풀링 계층으로 구성되는 기본적인 CNN
- 비중 있는 층(합성곱 계층, 완전연결 계층)을 모두 16층(혹은 19층)으로 심화한게 특징
- 층 깊이에 따라 VGG16, VGG19로 구분
2. GoogLeNet
- 세로 방향 깊이 뿐 아니라 가로 방향도 깊은 것이 특징
- 가로 방향에 '폭'이 있는 것 => 인셉션 구조
- 인셉션 구조를 하나의 구성요소로 사용
- 1x1 크기의 합성곱 연산은 매개변수 제거와 고속처리에 기여
3. ResNet
- 딥러닝 학습에서 층이 깊어지면 학습이 잘 되지 않는 문제를 해결한 신경망
- 스킵 연결(skip connection)을 도입 : 층의 깊이에 비례해 성능을 향상시킬 수 있게 한 핵심
- 스킵 연결은 입력 데이터를 합성곱 계층을 건너뛰어 바로 출력에 더하는 구조
- 이러한 스킵 연결이 역전파 때 신호 감쇠를 막아줌.
전이학습(Transfer learning)
- 위의 세 모델들과 같이 ImageNet이 제공하는 거대한 데이터셋으로 학습한 가중치 값들은 실제 활용해도 효과적
- 전이 학습 : 학습된 가중치를 다른 신경망에 복사한 다음, 그 상태로 재학습 수행
ex) VGG와 구성이 같은 신경망을 준비하고, 미리 학습된 가중치를 초깃값으로 설정 후, 새로운 데이터셋을 대상으로 재학습(fine tuning)
- 전이학습은 보유한 데이터셋이 적을 때 유용
딥러닝 고속화(더 빠르게)
- GPU 컴퓨팅
- 분산 학습 : 다수의 GPU와 기기로 계산을 분산
- 비트 줄이기 : 메모리 용량과 버스 대역폭 등이 고속화의 병목이 되지 않도로 주고받는 데이터의 비트 수 최소화
딥러닝의 활용
1. 사물 검출
- 이미지 속에 담긴 사물의 위치와 종류(클래스) 알아내는 기술
- 이미지 어딘가에 있을 사물의 위치까지 알아내야 함 => 사물 인식보다 어려움
- RCNN(Regions with CNN)을 주로 이용
2. 분할(segmentation)
- 이미지를 픽셀 수준에서 분류
3. 사진 캡션 생성
- 사진만 보고 캡션을 생성해주는 딥러닝 기술
- NIC(Neural Image Caption) 모델이 대표적
- NIC는 CNN과 자연어를 다루는 RNN(Recurrent Neural Network)으로 구성
- NIC는 CNN으로 사진에서 특징 추출하고, 그 특징을 RNN에 넘김
- 사진이나 자연어와 같은 여러 종류의 정보를 조합하고 처리하는 것 => 멀티모달 처리(multimodal processing)
Deep Q-Network(강화학습)
- 줄여서 DQN
- 자전거를 배울 때 사람이 시행착오를 겪으며 배우듯 컴퓨터도 시행착오 과정에서 스스로 학습토록 하는 분야
- '가르침'에 의존하는 '지도학습'과는 다른 분야
- 에이전트가 환경에 맞게 행동 선택, 그 행동에 의해 환경이 변함
- 환경이 변하면 에이전트는 어떠한 보상을 얻음
- 강화학습의 목적 : 에이전트의 행동 지침을 더 나은 보상을 받는 쪽으로 바로잡는 것
- 2016년에 등장한 인공지능 알파고(AlphaGo)에도 강화학습이 이용되었음
'AI > 밑바닥딥러닝1' 카테고리의 다른 글
L1, L2 regularization (0) | 2020.06.28 |
---|---|
오버피팅(overfitting) 방지법 정리 (0) | 2020.06.27 |
[CH7] 합성곱 신경망(CNN) (0) | 2020.06.23 |
[CH6] 학습 관련 기술들 (0) | 2020.06.21 |
[CH5] 오차역전파법 (0) | 2020.06.20 |