"딥러닝 첫것음" 김성필 지음 요약.
인공지능 > 머신러닝 > 딥러닝
- 머신러닝 : 데이터를 이용한 모델링 기법
- '학습데이터;로 부터 '모델을 찾아내는 귀납적 기법
- 학습데이터 → 머신러닝 → 모델(aka. 가설hypothsis)
※ 모델링 기법에는 머신러닝만 있는 것이 아니다. 동역학 분야에서 뉴턴의 운동법칙을 이용한 물체의 운동을 일련의 방정식, 즉 운동 방적식으로 기술하는 모델링 기법을 오래전부터 사용.
※전문가들의 지식과 노하우 등을 모아 전문가에 못지않는 문제 해결 능력을 갖도록 모델링한 '전문가 시스템'
※ 법칙이나 논리적 모델일 하기 어려운 분야 : 영상인식, 음성 인식, 자연어 처리 등 지능과 관련된 분야에서 많이 사용.
→ 공식이나 법칙으로 접근하기 어려운(물리법칙X, 수학공식X) 경우에는 학습 데이터를 이용해 모델을 구하자는게 머신러닝의 핵심

- 추론(Inference) : 입력 데이터 → 모델 → 결과
- 학습 데이터와 입력 데이터의 차이가 바로 머신러닝님의 구조적인 난제.
- 학습 데이터가 나쁘면 머신러닝 기법으로도 원하는 목적을 달성하기 어렵다.
- 실제 데이터의 특성이 잘 반영되어 있고 편향되지 않는 학습 데이터를 확보하는 것이 아주 중요.
- 목적 → 일반화 Generalization : 학습 데이터와 입력 데이터가 달라져도 성능 차이가 나지 않게 함.
- 머린러닝 종류
- 지도학습 : {입력, 정답}
- [입력]에 대한 모델의 출력과 [정답]의 차이가 줄도록 모델을 수정하는 학습.
- 상대적으로 쓰임새가 많음.
- 비지도학습 : {입력}
- [입력]만 주어지고 정답이 없는 형태
- 데이터의 특성을 분석하거나 데이터를 가공하는 데 사용.
- 정답이 없으니 해법은 배우지 못하고, 문제의 구문이나 형태를 가지고 유형을 나눠보는 정도.
- ex) 사람인가 아닌가를 맞추는 정도.
- 강화학습 : {입력, 출력, 출력에 대한 점수 }
- [입력]과 [출력], 그리고[출력에 대한 평가]의 쌍을 학습 데이터로 사용.
- 제어나 게임 플레이등 상호작용을 통해 최적의 동작을 학습할때 사용.
- ex) 축구공을 어느정도 세기로 차야 공을 컨트롤 할 수 있는지...
- 지도학습 : {입력, 정답}
과적합 Overfitting
- 학습 데이터들을 적절히 두 분류로 나누는 판별 곡선을 찾아야 하지만
- 노이즈 데이터 역시 학습 → 학습 데이터 지나치게 치충되서 일반화 성능이 떨어짐 → 과적합.
- 학습 데이터에서는 성능이 좋지만, 실제 입력 데이터에서는 성능이 크게 떨어지는 현상. 일반화 성능을 떨어뜨리는 주요 원인.
https://en.wikipedia.org/wiki/Overfitting
Overfitting - Wikipedia
Figure 1. The green line represents an overfitted model and the black line represents a regularized model. While the green line best follows the training data, it is too dependent on that data and it is likely to have a higher error rate on new unseen dat
en.wikipedia.org
- 과적합 해결방법
- 정칙화 Regularization
- 모델의 형태를 최대한 간단하게 만들려는 수치해석 기법.(단순한 모델로 유도)
- 검증 Validation
- 학습 데이터의 일부를 학습에 사용하지 않고 검증용으로 사용하는 기법.
- 학습데이터를 사용해서 과적합을 판단하기 불가능하니 검증셋으로 과적합 여부를 판단하겠다는 의도.
- 학습 데이터를 학습용 데이터와 검증용 데이터로 나눔. (보통 8:2)
- 학습용 데이터로 모델을 학습
- 검증용 데이터로 모델의 성능을 평가.
- 성능이 만족 스럽다면 → 사용
- 성능이 떨어지거나 과적합이 일어나면 모델 수정 후 다시 학습.
- 교차검증 cross validation
- Validation 변형
- 학습용과 검증용 데이터를 나누지만, 두 데이터를 고정하지 않고 계속 바꿈.
- 검증용 데이터를 고정해 놓으면 모델이 검증용 데이터에도 과적합 Overfitting될 여지가 있기 떄문
- 정칙화 Regularization
지도학습
- 분류 classification
- 입력 데이터가 어느 "범주"에 속하는지를 알아내는 문제.
- 스팸 메일 → 정상/스팸 분류
- 숫자 인식 → 0~9 중의 하나로 분류
- 얼굴 인식 → 얼굴 이미지를 등록된 사용자 중의 하나로 분류
- 입력 : 정답범주
- 입력 데이터가 어느 범주에 해당하는지 '판별'하는 모델을 만들때.
- 입력 데이터가 어느 "범주"에 속하는지를 알아내는 문제.
- 회귀 regression
- 범주를 추정하는 게 아니라, 어떤 "값"을 예측.
- 회귀 regress의 원래 뜻은 예전으로 돌아간다는 의미. 영국의 유전학자 프랜시스 골턴(Francis Galton)이 부모와 자녀들 키의 연관 관계를 연구하다 보니, 개개인의 키는 결국 전체 키의 평균으로 수렴하는 경향이 있다는 걸 발견하고는 자신의 방법론에 '회귀 분석'이란 이름을 붙였다고 함.
- 입력 : 정답값
- 입력 데이터의 '추세'를 예측하는 모델을 찾는다면 '회귀'문제.
- 범주를 추정하는 게 아니라, 어떤 "값"을 예측.
비지도학습
- 군집화 clustering
- 데이터의 특성을 분석해 관련 있는 데이터들끼리 묶어주는 기능.
- 지도학습의 분류 classification 은 결과가 비슷하지만 완전히 다른 기법이고, 명확히 구별해서 써야함.
신경망 neural network
- 머신러닝 : 학습규칙
- 모델 : 신경망

- 뇌의 신경세포를 모사해 만든 노드들의 네트워크
- 노드는 입력 신호들의 가중합을 구하고
- 이 값을 활성함수에 입력해 나온 값을 외부로 출력
- 대부분의 신경망은 노드들을 ㅖ층적으로 배치한 구조.
- 계층 구조로 된 신경망에서 신호는 입력층으로 들어가 은닉층을 거쳐 출력층의 순서로 처리.
- 은닉층의 노드에서는 활성함수로 선형함수를 사용하면 안됨.(은닉층을 추가한 효과가 사라짐)
- 출력층의 노드에서는 회귀 문제와 같이 선형함수를 사용해야 하는 경우가 있음.
- 신경망에서의 지도학습
- 신경망의 출력과 주어진 정답의 차이를 줄이도록 연결 가중치를 변경하는 과정.
- 주어진 학습 데이터에 맞춰 신경망의 가중치를 변경하는 방법을 '학습 규칙'이라고 부름.
- 신경망의 지도학습에서 오차를 계산하는 방법은 크게 3가지.
- Stochastic 경사 하강법
- 배치
- 미니배치
- 델타규칙
- 단층 신경망의 대표적인 학습 규칙
- 활성함수에 따라 달라짐
- 반족 작업을 통해 정답을 단계적으로 찾아가는 기법.
- 신경망의 오차가 충분히 줄어들 때까지 학습 데이터를 반복해서 재학습 시켜야 함.
- 단층 신경망은 특정 유형의 문제에만 적용할 수 있다.


다층신경망
- 델타 규칙으로 학습 불가능.
- 역전파 알고리즘으로 학습. → 딥러닝에서 사용되는 학습 규칙
- 신경망의 출력 오차를 출력층에서부터 역순으로 전파시켜 은닉층의 오차를 정의한 다음, 델타 규칙에 의해 각 계층의 가중치를 갱신.
- 은닉 노드들의 오차를 정의하는 체계적인 방법
- 가중치 갱신식은 다양한 형태가 존재. → 학습 안정성과 속도를 높여 학습이 잘 되게 하기 위함.
- 단충 : 선형분리 문제만 다룰 수 있음. → 다충 : 선형 분리 불가능한 문제도 모델링 가능함.
- 비용함수는 신경망의 출력 오차를 계산하는 함수로 오차에 비례하는 값을 갖음.
- 오차에 민감함 Cross entropy함수가 많이 쓰임
- 신경망의 학습 규칙은 비용함수와 활성함수에 따라 조금씩 달리짐. 특히 출력 노드에서 오차로부터 델타를 구하는 수식이 바뀜.
- 과적합 문제를 해결하는 기법 중의 하나인 Regularization또한 비용함수에 가중치의 크기를 나타내는 항을 추가하는 방식으로 구현됨.
신경망과 분류
- 이진분류인지 다범주분류인지에 따라 출력층 노드의 개수와 활성함수를 다르게 구성하는게 보통
- 이진분류
- 출력 노드는 1개로 구성하고 활성함수로는 대개 시그모이드 함수를 사용
- 학습 데이터의 정답은 활성함수의 최대값과 최소값으로 변환.
- 학습 규칙의 비용함수로는 Cross entropy 함수를 사용
- 다범주 분류
- 출력 노드는 범주의 개수만큼 구성.
- 활성함수로는 소프트맥스 함수를 사용.
- 학습 데이터의 정답은 one-hot 인코딩을 통해 벡터로 변환.
- 학습 규칙의 비용함수로는 Cross entropy함수를 사용.
딥러닝
- '심층 신경망을 이용한 머신러닝 기법'이라고 정의
- 은닉층이 깊을 수록 학습이 잘 안되어 성능이 오히려 떨어지는 문제가 있었음 → 딥러닝에서 문제가 해결됨.
- 특정한 기술 덕분이 아님.
- 여러 가지 작은 기술적 개선들이 모인 결과
- 그래디언트 소실
- 활성함수를 ReLU함수로 바꾸고
- 비용함수로 Cross Entropy 함수를 사용한 학습 규칙으로 대폭 개선됨.
- 수치해석적으로 개선된 경사 하강법을 사용하는 것도 도움이 됨.
- 과적합
- 드롭아웃 기법이나 Regularization통해 과적합 문제를 해결
- 많은 계산량
- GPU의 등장과 다양한 알고리즘 덕분에 상당 부분 극복됨.
컨볼루션 신경망
- 영상인식
- 원본 입력 이미지 대신 특징이 무각된 이미지, 즉 특징 맵을 분류기에 입력해야함.
- 특징 추출기는 사람이 직접 설계하는 경우가 대부분이었음.
- 컨볼루션넷은 특수한 형태의 신경망으로 구성된 특징 추출기를 포함하고 있고, 이 신경망의 가중치도 학습을 통해 결정.
- '특징 추출 신경망'과 '분류 신경망'으로 구성된 컨볼루션 뉴럴 네트워는 계층이 깊어 그 동안 제대로 학습시키기 어려웠지만, 딥러닝 기술 덕분에 이 문제를 해결하고 빠르게 발전하는 중.
- '특징 추출 신경망'은 컨볼루션 계층과 풀링 계층을 차례로 쌓은 형태로 되어 있습니다. 컨볼루션 네트워크를 2차원 이미지를 대상으로 하기 때문에 대부분의 연산이 개념적으로는 2차원상에서 이루어집니다.
- 컨볼루션 필터를 통해 입력 이미지에서 특징이 부각된 이미지를 만들어냅니다.
- 출력하는 이미지의 개수는 포함된 컴볼루션 필터의 개수와 같다.
- 컨볼루션 필터의 실체는 2차원 행렬.
- 폴링 계층은 이미지의 크기를 줄이는 역할.
- 입력 이미지에서 일정한 픽셀을 묶어 한 개의 대표값으로 바꾸는 방식을 사용.
- 주로 최대값이나 평균값으로 결정.
'Routine > 머신러닝' 카테고리의 다른 글
| TF-Slim 시작하지 (0) | 2020.02.02 |
|---|---|
| Key value memory networks for task oriented dialogue (0) | 2020.02.02 |
| calculate byte by vector dimention (0) | 2020.02.02 |
| Vector Similarity Library - Faiss (0) | 2020.02.02 |
| 추론(Inference)과 예측(prediction) 용어의 차이 (0) | 2019.02.12 |