습관을 애정한다

케라스 창시자에게 배우는 딥러닝 2장 부분요약(2.1~2.2)

by 습관중독

2장 시작하기 전에: 신경망의 수학적 구성요소
2.1. 신경망과의 첫만남
2.2. 신경망을 위한 데이터 표현
2.3. 신경망의 톱니바퀴: 텐서연산
2.4. 신경망의 엔진: 그래디언트 기반 최적화
2.5. 첫 번째 예제 다시 살펴보기
2.6. 요약
<핵심>
- 첫번째 신경망 예제 만들기
- 텐서와 텐서 연산의 개념
- 역전파와 경사 하강법을 사용하여 신경망이 학습되는 방법

2.1. 신경망과의 첫만남
1. MNIST 데이터셋 사용하여 흑백 손글씨 숫자 이미지(28*28 픽셀)를 10개의 범주(0~9)로 분류
- 클래스: 분류문제의 범주(category)
- 데이터 포인트: 샘플
- 레이블: 특정 샘플의 클래스
2. 신경망 층인 Dense 층 2개
1) activation = ReLu
2) activation = SoftMax

2.2. 신경망을 위한 데이터 표현
- 텐서: 데이터를 위한 컨테이너. 거의 항상 수치형 데이터를 다루므로 숫자를 위한 컨테이너. 2D 텐서=행렬. 텐서는 임의의 차원 개수를 가지는 행렬의 일반적인 모습.

2.2.1 스칼라(0D 텐서)
1. 개념
- 하나의 숫자만 담는 텐서. 스칼라=0차원 텐서=0D 텐서
- 넘파이: float32 or float64. ndim 속성으로 넘파이 배열 축개수 확인 가능
- 스칼라 ndim=0
- 텐서의 축 개수=rank

2.2.2 벡터(1D 텐서)
- 숫자의 배열=벡터=1D 텐서. 1개의 축
- 1개의 리스트
- 1개 벡터 내 5개의 원소=5차원 벡터
- 차원수: 특정 축을 따라 놓인 원소의 개수

<5D 텐서 VS. 5D 벡터>
1. 5D 텐서=랭크 5인 텐서: 5개의 축. 텐서의 축을 따라 여러개 차원을 가진 벡터 가능.
2. 5D 벡터: 하나의 축을 따라 5개의 차원

2.2.3 행렬(2D 텐서)
벡터의 배열이 행렬(matrix) 또는 2D 텐서인 경우.
행렬=2개의 축, 행+열

2.2.4 3D텐서와 고차원 텐서
- 3D텐서: 직육면체
- 4D텐서: 3D텐서들을 하나의 배열로 합친 것
- 딥러닝: 보통 0D에서 4D까지의 텐서 다룸. 동영상 데이터=5D 텐서

2.2.5 핵심 속성
- 축의 개수(rank): 3D 텐서=3개의 축. 행렬=2개의 축. 넘파이=ndim으로 체크
- 크기(shape): 텐서의 각 축을 따라 차원수를 나타낸 튜플.
- 데이터 타입: 넘파이=dtype에 저장. ex) float32, unit8, float64
- 어레이.ndim=축의 개수
- 어레이.shape=배열의 크기
- 어레이.dtype=데이터 타입

2.2.6 넘파이로 텐서 조작하기 = 슬라이싱
- train_images[i]: 첫번째 축을 따라 특정 숫자 선택
<3D 텐서슬라이싱: paraphrasing>
1. train_images[10:100]
= train_images[10:100, :, :]
= train_images[10:100, 0:28, 0:28]
(90, 28, 28)

2. train_images[:, 14:, 14:]
= train_images[:, 7:-7, 7:-7]

2.2.7 배치 데이터
- 데이터 텐서의 첫번째 축=샘플 축(sample axis)=샘플 차원(sample dimension)
- 딥러닝 모델: 한번에 전체 데이터셋 처리x. 데이터를 작은 배치로 나눔.
- n번 째 배치
batch = train_images[128*n:128*(n+1)]

2.2.8 텐서의 실제 사례
1. 2D 텐서: 벡터
2. 3D 텐서: 시계열 데이터, 시퀀스
3. 4D 텐서: 이미지
4. 5D 텐서: 동영상

2.2.9 벡터 데이터
첫째축=샘플 축
둘째축=특성 축

2.2.10 시계열 데이터 또는 시퀀스 데이터
- 특성X타임스텝X샘플
- 시간축=항상 두번째 축: 인덱스 1
- 주식 가격 데이터셋: 분봉 현재가. 1분당 데이터=3D 텐서. 하루동안 거래는 (390, 3) 크기의 2D 텐서로 인코딩. 하루 거래 시간=390분. 250일치 데이터는 (250, 390, 3) 크기의 3D 텐서. 1일치 데이터가 하나의 샘플
- 트윗 데이터셋: 각 트윗은 128개 알파벳으로 구성된 280개의 문자 시퀀스. 각 문자는 128개 크기인 2진 벡터로 인코딩(해당 문자의 인덱스만 1이고 나머지는 모두 0인 벡터. my 원핫인코딩). 각 트윗은 (280, 128) 크기의 2D 텐서로 인코딩. 100만 개의 트윗=(100000, 280, 128) 크기의 텐서에 저장됨.

2.2.11 이미지 데이터
- 흑백은 하나의 컬러 채널=2D 텐서 가능 BUT 관례상 이미지 텐서는 항상 3D
- 2가지 방식 사용
1) channel last 방식=텐서플로.
2) channel first 방식=씨아노.

2.2.12 비디오 데이터
- 5D 텐서

2.3. 신경망의 톱니바퀴: 텐서연산
2.3.1 원소별 연산
2.3.2 브로드캐스팅
2.3.3 텐서 점곱
2.3.4 텐서 크기 변환
2.3.5 텐서 연산의 기하학적 해석
2.3.6 딥러닝의 기하학적 해석

2.4. 신경망의 엔진: 그래디언트 기반 최적화
2.4.1 변화율이란?
2.4.2 텐서 연산의 변화율: 그래디언트
2.4.3 확률적 경사 하강법
2.4.4 변화율 연결: 역전파 알고리즘

2.5. 첫 번째 예제 다시 살펴보기
2.6. 요약

 

 

 

 

 

 

 

 

블로그의 정보

습관을 애정한다

습관중독

활동하기