[딥러닝] 학습 방법과 텐서플로우

유가연·2022년 2월 7일
0

TIL

목록 보기
16/32

딥러닝 모델의 학습 방법

Node = x1, x2 ...
가중치(weight) : 노든간의 연결강도

loss function을 최소화하기 위해 최적화 알고리즘을 적용

input -> hidden -> output

-> 는 weight를 의미.

loss function : 예측값과 실제값간의 오차값
optimization : 오차값을 최소화하는 모델의 인자를 찾는 것. 가중치와 액티베이트 펑션을 조정해서 찾아낼 수 있음.

딥러닝 모델의 학습 방법은 한 마디로 예측값과 실제값 간의 오차값을 최소화하기 위해 오차값을 최소화하는 모델의 인자를 찾는 알고리즘을 적용

gradient descent (gd) 가장 기본적인 최적화 알고리즘

신경망의 가중치들을 w라고 했을 때 손실함수 loss(w)의 값을 최소화하기 위해 기울기를 이용하는 방법

딥러닝에서는 역전파를 통해 각 가중치들의 기울기를 구할 수 있음.
역전파? 나의 목표 target 값과 실제 모델이 예측한 output 값이 얼마나 차이나는지 구한 후 오차값을 다시 뒤로 전파해가며 변수들을 갱신하는 알고리즘.

순정파? 입력값을 바탕으로 출력값을 계산하는 과정.

로스값을 각각의 가중치에 대해 편미분한 값들의 벡터 = GRADIENT(기울기벡터)
가중치 업데이트 : 기존 가중치에 계산한 GRADIENT의 학습률a 를 곱해서 그 값을 빼주면 구할 수 있음

np.square는 입력된 값의 제곱을 구함.

텐서플로우

수학적으로 역전파를 구하는 수식은 배웠다. 딥러닝 모델 구현을 위해 학습해야 할 분야는 파이썬과 하드웨어, c/c++(연산장치제어) 등등 배울 것이 너무 많음. 딥러닝 모델의 학습과 추론을 위한 프로그램으로 프레임워크들이 나옴. 딥러닝 모델을 쉽게 구현하고 사용가능함. 파이토치나 텐서플로우를 자주 사용하는 추세. 텐서플로우 > 파이토치 > 케라스. 유연하고 효육적이며 확장성있는 딥러닝 프레임워크.

텐서 : 멀티디멘셔널 어레이 = 데이터. 딥러닝에서 텐서는 다차원 배열로 나타내는 데이터를 의미.
플로우 : 데이터의 흐름을 의미.

텐서플로우에서 계산은 데이터 플로우 그래프로 수행. 그래프를 따라 데이터가 노드를 거쳐 흘러가면서 계산.

텐서플로우로 구현하기

  1. 상수

tf.zeros(shape, dtype = tf.float32, name = None)
tf.ones(shape, dtype = tf.float32, name = None)

  1. 시퀀스

  1. 변수

?

unsigned integer : 0과 양수만 표현할 수 있는 int

텐서플로우 함수

합 tf.add
차 tf.subtract
곱 tf.multiply
나누기 tr.truediv

딥러닝 모델 구현 순서

  1. 데이터셋 준비하기

(1) epoch : 한번의 epoch는 전체 데이터 셋에 대해 한 번 학습을 완료한 상태
(2) batch : 나눠진 데이터 셋(보통 mini-batch라고 표현)
(3) iteration : epoch를 나눠서 실행하는 횟수

  1. 딥러닝 모델 구축하기
    keras : 딥러닝 모델을 간단하고 빠르게 구현

모델 클래스 객체 생성

모델의 각 layer 구성

units : 레이어 안의 노드 수 activation : 적용할 activation 함수 설정
input layer는 입력 형태에 대한 정보를 필요로 하기 때문에 input_shape / input_dim 인자 설정하기

모델에 layer 추가하기

  1. 모델 학습시키기

  1. 평가 및 예측하기

profile
유가연

0개의 댓글