본문 바로가기

딥러닝/책읽고 정리

케라스 창시자에게 배우는 딥러닝 : 2. 신경망의 구성요소

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호출을 단순화함.