[Machine Learning] 딥러닝 기초
깊은 신경망 : 다층 퍼셉트론에 은닉층을 여러 개 추가한 것
딥러닝 : 깊은 신경망을 학습시키는 알고리즘
1. 딥러닝의 등장
딥러닝의 기술 혁신 요인
- 1980년대 깊은 신경망에 대한 아이디어가 제시되었지만, 은닉층을 추가하여 MLP를 깊게 만들면 제대로 학습되지 않았다.
- 1990년대 부분적으로 딥러닝에 대한 긍정적인 연구 결과가 발표되기 시작하여 2000년대에 딥러닝이 꽃 피웠다.
년도 | 문제/해결 | 설명 |
---|---|---|
1980 | 그레디언트 소멸 문제 | 출력층에서 시작하여 입력층 방향으로 진행하면서 그레디언트를 계산하고 가중치를 갱신하는 역전파 알고리즘이 수행될 때, 여러 층을 거치면서 그레디언트 값이 작아져 입력층에 가까워지면 변화가 거의 없어졌다. |
과잉적합 문제 | 늘어난 매개변수에 비해 훈련 집합이 작아서 과잉적합에 빠질 위험이 높아졌다. | |
과다한 계산 시간 | 병렬 처리를 하귀 위해 값비싼 슈퍼컴퓨터가 필요했다. | |
2000 | 컨볼루션 신경망 | 작은 크기의 컨볼루션 마스크를 사용하는 부분연결 구조와 가중치 공유 기법이 개발되었다. |
값싼 GPU | 대학 실험실에서도 병렬 처리를 할 수 있게 되었고, 학습 시간이 10~100배 단축되어 성능 실험을 다채롭게 할 수 있게 되었다. | |
큰 학습 데이터 | 인터넷을 통해 많은 학습 데이터를 수집할 수 있게 되었다. | |
성능이 좋은 활성함수 | 계산은 단순하지만 성능이 더 좋은 활성함수가 개발되었다. | |
학습에 효과적인 다양한 규제 기법 | 가중치 축소 기법, 드롭아웃 기법, 조기 멈춤, 데어터 확대, 앙상블 | |
층별 예비학습 |
특징 학습이 부각
패러다임 | 수작업 특징 | 특징 학습 |
---|---|---|
설명 | 사람이 시행착오를 거쳐 고안한 특징 추출 알고리즘으로 특징 벡터를 추출하여 신경망에 입력하는 접근 방식 | 기계학습에서 은닉칭이 계층적인 특징을 추출하는 방식 |
기계학습의 적용 범위 | 분류, 회귀 | 분류, 회귀, 생성 모델, 영상 분할 모델 |
2. 깊은 다층 퍼셉트론
- MLP : 한 두 개의 은닉층을 가진 구조
- 깊은 MLP : 세 개 이상의 은닉층을 가진 구조
퍼셉트론 | MLP | DMLP | |
---|---|---|---|
활성함수 | 계단함수 | 시그모이드 함수 | ReLU 함수 |
목적함수 | 평균 제곱 오차 | 평균 제곱 오차 | 교차 엔트로피, 로그우도 |
3. 컨볼로션 신경망
DMLP | CNN | |
---|---|---|
연결 | 완전 연결 구조 | 부분 연결 구조(희소 연결 구조) |
모델의 복잡도 | 높다 | 낮다 |
특징 | 과잉적합 우려 | 좋은 특징 추출 |
두 층 사이 가중치의 수($n_{l-1}, n_l$) | $n_{l-1}*n_l$ | $3*n_l$ |
입력 데이터 형식 | 벡터(1차원 배열) | 행렬(2차원 배열), 텐서(3차원 배열) |
입력 데이터 크기 | 항상 같은 크기 | 가변 크기 |
CNN은 한 요소와 이웃 요소의 관련성이 깊은 격자 구조를 가진 데이터에 적합
- Activation map : 각 뉴런이 입력 데이터의 특정 부분에 얼마나 반응하는지 나타내는 지도 또는 배열. 컨볼루션 연산을 통해 얻어진다.
컨볼루션 연산
- 마스크 : 커널 또는 필터 또는 윈도
- 컨볼루션 : 해당하는 요소끼리 곱하고 그 결과를 모두 더하는 선형 연산
- 특징맵 : 컨볼루션의 결과
1차원 컨볼루션, 2차원 컨볼루션, 3차원 컨볼루션
컨볼루션 연산을 거치면 가장자리에서 총 h - 1개의 노드가 줄어든다. 깊은 신경망에서는 컨볼루션층이 여러 번 반복되므로 줄어드는 양이 많아져 문제가 된다.
덧데기, 가장자리에 인접한 노드값을 복사하는 방식
가중치 공유와 다중 특징 맵 추출
- 가중치 공유 또는 묶인 가중치 : 모든 노드가 같은 커널을 사용하여 가중치를 공유하는 기법
각각 8개의 노드를 가진 두 층 사이의 가중치의 개수
MLP : 8 * 8 = 64
CNN : 3
-> 모델의 복잡도가 크게 낮아진다.
커널이 어떤 값을 가지느냐에 따라 추출하느ㅜㄴ 특징이 달라진다.
컨볼루션 연산에 다른 CNN 연산
큰 보폭에 의한 다운샘플링
텐서에 적용
Stanford
Q. image : 32 x 32 x 3 (가로 x 세로 x rgb), filter : 5 x 5 x 3. 만약 image의 모든 값이 1이고, 필터1의 한 값이 3이고 나머지는 0, 필터2의 한 값이 2이고 나머지 0, 필터3의 한 값이 -1이고 나머지 0이라면, 28 x 28 activation map의 모든 값은? -> 4
Q. why 28 x 28? 또한 stride에 따라 달라진다
Output size = (N - F) / stride + 1
컨볼루션 연산
- padding(덧데기) : 가장자리에서 영상의 크기가 줄어드는 효과 방지
병렬 분산 구조
- Stride(보폭) :
Pooling
Stride를 크게 하면 downsampling이 가능하다.
pooling을 많이 하면 크기가 계속 작아진다.
DMLP : 특징 벡터의 크기가 달라지면 내부 구조를 다 바꿔야 하지만 CNN은 가변 크기를 다룰 수 있다.
4. 컨볼루션 신경망 사례 연구
2011 | 2012 | 2013 | 2014 | 2015 | |
---|---|---|---|---|---|
우승 architecture | Xerox | AlexNet | GoogleNet(1등), VGGNet(2등) | ResNet | |
Team | 토론토 대학 | Clarifi | Google, 옥스퍼트 | 마이크로소프트 | |
5순위 오류율 | 25.8% | 15.3% | |||
특징 | 수작업 | 첫 CNN 참여 | 인셉션 모듈 / 3X3 커널(작은), 깊은 층 | 지름길 연결 |
5. 생성 모델
분별 모델 | 생성 모델 |
---|---|
MLP, DMLP, CNN | GAN, VAE, RNN, RBM |
지도 학습 | 비지도 학습 |
확률 분포x | 확률 분포o |
GAN
생성기(G)와 분별기(D)를 서로 대립시켜 학습한다. 생성기의 목적은 D가 진위 구별을 못하게 하는 것이고, 분별기는 훈련 집합의 진짜 샘플과 G가 만든 가짜 샘플을 구별한다.
DCGAN
6. 딥러닝은 왜 강력한가?
refernece : 오일석 - 기계학습