2장. 신경망 구조와 구성요소
'케라스 창시자에게 배우는 딥러닝' 교재 2장을 요약정리한 내용입니다.
- 신경망을 위한 데이터 표현
- 텐서 연산
- Gradient 기반 최적화
1. 신경망을 위한 데이터 표현
- 텐서(Tensor)란 다차원 Numpy 배열이다...2D 텐서는 행렬!!
- 여기서 D는 Dimension의 약자로 텐서에서 종종 axis로 부르기도 하며, rank와 같은 말(D=axis갯수=rank).
- 단, 이건 텐서에서의 표현, 벡터내에서 표현하는 차원은 원소의 갯수(tensor와는 다르게 쓰임)
1) 스칼라 (Scalar, 0D tensor)
- 하나의 숫자를 의미.
- ndim으로 차원을 뽑으면 0차원이라고 나옴.
- 텐서의 축(axis)의 갯수를 rank라고 부름.
2) 벡터 (vector, 1D tensor)
- 숫자의 배열
- 딱하나의 축을 갖는다.
- 5개의 원소를 가지고 있다면, 5차원 벡터 ex) [1,2,3,4,5]
3) 행렬 (matrix, 2D tensor)
- 벡터의 배열
- 숫자가 채워진 사각 격자의 모습.
- rank=2이고, ex) [[1,2],[3,4,]]
4) 3D 텐서와 고차원 텐서
- 행렬의 배열
- 직육면체모양으로 단면(행렬)이 겹쳐있는 형태의 데이터
- 3D 텐서들을 하나의 배열로 합치면 4D 텐서, 주로 이미지 데이터가 4D 텐서
- 동영상 데이터가 5D 텐서 형태이다.
5) 이미지 데이터
- (샘플데이터수, 높이, 너비, 컬러채널수)로 구성된 4D 텐서 데이터
- 흑백 이미지의 경우 RGB채널수가 1이어서 1차원 줄어든다.
- Theano는 (샘플데이터수, 컬러채널수, 높이, 너비)의 채널 우선방식을 사용
- Tensorflow는 위의 방식을 따르고, Keras는 둘다 지원.
6) 비디오 데이터
- 비디오는 이미지에 프레임 개념이 추가된다.
- 하나의 비디오는 프레임의 연속, 각 프레임은 컬러이미지
- (샘플비디오수, 프레임수, 높이, 너비, 컬러채널수)의 형태
- 예를 들어, 60초짜리 120x140 영상을 초당 4프레임으로 샘플링하면 240프레임
- 이런 영상이 5개라면, (5, 240, 120, 140, 3) shape을 띔.
2. 텐서 연산
1) 원소별 연산 (element-wise operation)
- Relu같은 activation function이나 덧셈연산이 여기에 해당함.
- 같은 위치에 있는 원소끼리 덧셈, 각 원소마다 relu적용
2) 브로드캐스팅 (broadcasting)
- 크기(dim)가 다른 두 텐서의 연산.
- (32,10)행렬과 (10,)벡터를 더한다고 가정하면,
- (10,)벡터를 (1,10)로 만들어 첫번째 축으로 32번 연산을 반복하는 것이다.
3) 텐서 점곱 (dot product)
- 행렬의 내적을 의미.
- *는 원소별 곱셈을 의미하기때문에, dot함수를 사용
- Tensorflow에서는 matmul함수가 그 역할을 함.
4) 텐서 크기 변환 (reshape)
- 행과열의 재배열
- 변환된 텐서는 원래 텐서와 원소의 갯수가 동일.
- 대표적인 변환이 전치(transpose).
3. Gradient 기반 최적화
- 층별 가중치에 대한 손실(Loss)의 gradient를 계산.
- 이를 통해 가중치를 gradient 반대방향으로 움직이며 손실(Loss)를 줄인다.
- 이를 확률적 경사 하강법이라함.
- gradient 반대방향으로 얼마나 움직이는지 step-size로 정하는데,
- step-size가 너무 크면 수렴점에서 멀리 발산할 수있고, 너무 작으면 local optimum에 빠질 수 있다.
- 이러한 수렴 속도와 local optimum문제를 해결하기 위해 나온 개념이 모멘텀(momentum)
- 현재의 grandient + 이전 gradient까지 고려하는 개념이다.
- 연쇄법칙(chain rule)을 활용하여 gradient함수를 계산하고 역전파시 gradient호출을 단순화함.
'딥러닝 > 책읽고 정리' 카테고리의 다른 글
케라스 창시자에게 배우는 딥러닝 : 5장 컴퓨터 비전 (0) | 2019.04.14 |
---|