1.1. 지도학습¶
- 명시적인 정답을 제공하면서 학습시키는 유형
- 회귀(Regression)
- 특정한 데이터가 주어졌을 때 결과를 연속적인 값으로 예측
- 분류(Classification)
- 종류에 따라서 데이터를 분류
1.2. 비지도학습¶
- 명시적인 정답을 제공하지 않으면서 학습시키는 유형
- 클러스터링(Clustering)
- 데이터를 특정한 기준으로 분류
- 차원축소(Dimension Reduction)
- 고차원 데이터의 차원을 축소하여 새로운 차원의 데이터 생성
1.3. 딥러닝을 위한 도구¶
- Pytorch
- Google Colab
2. Tensor 만들기¶
In [ ]:
# Pytorch import
import torch
# list의 tensor화
a = torch.tensor([1, 2, 3])
# 4 * 5의 일행렬 tensor 생성
b = torch.ones(4, 5)
# 행렬 더하기
a = torch.tensor([1, 1])
b = torch.tensor([2, 2])
a + b
# 일반적인 곱
c = torch.tensor([
[1, 2],
[3, 4]
])
d = torch.tensor([
[1, 2],
[3, 4]
])
# 행렬곱 형태가 아닌 같은 자리의 성분끼리 곱해진다.
c * d
- Tensor는 인덱싱 표기법을 사용할 수 있다.
- Tensor는 numpy와 마찬가지로 브로드캐스팅을 지원한다.
In [ ]:
# tensor의 형태를 임의로 조정가능하다.
test = ([
[1, 2, 3, 4].
[1, 2, 3, 4].
[1, 2, 3, 4].
[1, 2, 3, 4]
])
# tensor의 형태를 2* 8로 변환
test.view(2, 8)
# 변환하고자 하는 tesnor의 크기가 변환을 희망하는 tensor의 크기보다 작으면 오류 반환
# 아래 식은 오류가 발생한다. 2 * 9 = 18로, 4 * 4 = 16보다 크기 때문이다.
test.view(2, 9)
# *1을 넣으면 가능한 수를 컴퓨터가 알아서 넣어준다.
# 아래 결과값은 test.view(2, 8)이다.
test.view(2, -1)
numpy
와tensor
는 상호 변환 가능하다.
3. 선형회귀¶
- 선형회귀의 학습 목적: 주어진 데이터를 이용해 선형 함수를 수정해나가는 것
- 다만, 학습을 많이 진행해도 완벽한 식은 찾을 수 없는 경우도 존재한다.
- 그러므로, 가장 근사한 식을 찾는 것을 목표로 한다.
3.1. 비용(Cost, loss, error)¶
- 가설이 얼마나 정확한지를 판단하는 기준
- 가설이 정확하지 않는다면 비용이 많이 발생
- 비용 계산 시 실제값 - 예상값 간 차이를 기준으로 진행.
3.2. MSE(Mean Squared Error)¶
- 모든 데이터에 대한 (실제값 - 예상값)^2의 합으로 비용 계산
- MSE를 최소화하는 방향으로 식을 구한다.
3.3. 도함수(Derivative)¶
- 입력 x에 대하여 함수의 기울기를 알려주는 함수
- 입력 x에 대하여 함수의 순간변화율을 알려주는 함수
- 미분 : 도함수를 계산하는 과정
- 미분을 이용하면 특장 값에서의 기울기를 구하는 것이 가능하다.
경사 하강 : 기울기를 구하여 비용을 줄이는 방법¶
- 기울기가 0인 지점(비용이 가장 최소화되는 부분)을 찾아서 점차 가중치를 이동시키는 방식으로 딥러닝을 진행한다 (경사하강을 이용한다)
- 다만, 기울기가 0이 되는 지점이 여럿 발생하는 경우도 존재하므로 유의한다 (2차 이상의 함수는 기울기가 여러개 될 수 있음)
3.4. 다변수 선형회귀¶
- 사회에서는 세 개 이상의 변수가 하나의 결과를 도출하는 것이 일반적이다.
- 행렬곱을 사용하여 여러 개의 입력을 처리한다.
3.5. 분류 문제에서의 선형회귀 : 로지스틱 회귀(Logistic Regression)¶
- 결과 값을 0부터 1사이로 제한하여 분류 문제를 해결한다.
- 회귀를 사용하여 데이터가 어떤 클래스에 속할 확률을 0~1 사이로 예측한다.
로지스틱 회귀에서 사용하는 함수 : sigmoid¶
- 모든 위치에서 미분 가능
- 0 ~ 1사이의 확률값 반환
- 로지스틱 회귀에 적합
Entropy¶
- H(P, Q), 실제확률 P(x)와 예측확률 Q(x)를 기준으로 특정 시스템이 얼마나 불안정한지를 알려준다.
Softmax Function¶
- 모델의 결과(output)을 모두 합한 값이 1이 되도록 만들기 휘새ㅓ 사용
- Binary classification - sigmoid를 사용한다.
- Multinomial classification - softmax를 사용한다.
Softmax 사용 시 비용함수 설정¶
- Cross-entropy 비용함수 사용
4. 딥러닝 : 뉴런¶
- 활성화 함수를 이용하여 비선형성(non-linearity)를 추가
- 하나의 hidden layer를 가지는 뉴럴 네트워크는 임의의 연속인 다변수 함수를 근사할 수 있음
합성함수의 미분(Chain-rule)¶
- 인공지능 모델은 여러 개의 레이어로 구성되어 있음.
- 손실 함수의 기울기를 계산하는 것은 합성함수를 미분하는 것과 같음
- 도함수의 정의를 이용하여 합성함수의 미분 결과를 유도
대표적인 활성함수¶
- sigmond : 역전파 시 0.3씩 곱해지는 문제점이 있어서 현재는 잘 사용하지 않음
- ReLU : sigmond의 대체로 사용. 입력값이 0 이상일 때만 입력값을 그대로 출력하는 함수
5. CNN¶
- 하나의 필터는 이미지에 한 픽셀씩 이동하면서 특징 맵(feature map)을 계산
- 일반적으로 CNN에서 레이어가 깊어질수록 채널 수가 많아지는 반면, 너비와 높이는 줄어든다.
- 컨볼루션 레이어의 서로 다른 필터들은 각각 적절한 특징값을 추출하도록 학습된다.
- 실제로 각 필터는 이미지의 특징을 인식하기 위한 목적으로 사용됨
- 각 필터는 특징이 반영된 특징맵을 생성
- 얕은 층에서는 local feature, 깊은 층에서는 고차원적 global feature을 인식
VGG Netwrok¶
- 작은 크기의 3 * 3 컨볼루션 필터를 이용해 레이어의 깊이를 늘려 우수한 성능을 낸다
- 필터를 적용할수록 폭과 너비는 감소하는 반면, 레이어의 깊이는 늘어나는 형태를 보임.
- 단, 레이어를 깊게 쌓기만 해서는 좋은 성능을 내기 힘든 경우도 있음.
ResNet¶
- 잔여 블록(residual block)을 이용해 네트워크의 최적화 난이도 하락
'전문지식 함양 > TIL' 카테고리의 다른 글
[프로그래머스 겨울방학 인공지능 과정] python 풍경 이미지분류 알고리즘의 구현1 (0) | 2022.01.26 |
---|---|
[프로그래머스 겨울방학 인공지능 과정] pytorch 예제 살펴보기1 (0) | 2022.01.25 |
[프로그래머스 겨울방학 인공지능 과정] numpy 복습 및 심화문제 (0) | 2022.01.20 |
[프로그래머스 겨울방학 인공지능 과정] np.where (0) | 2022.01.19 |
[프로그래머스 겨울방학 인공지능 과정] numpy 복습 2 (0) | 2022.01.18 |