AI/Deep Learning

신경망 and Tensorflow

공기반 코딩반 2022. 9. 17. 13:04
반응형

딥러닝 모델 구성요소

- 가중치(weight): 노드간의 연결 강도

- Node/Unit: 각 층을 구성하는 요소

- Layer: 모델을 구성하는 층

 

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

loss function을 최소화하는 가중치 가져야함. 이를 최적화 시키는 방법 => Gradient Descent

Gradient Descent(경사하강법)

: 가중치를 Loss Function 값이 작아지게 업데이트 하는 방법

: Gradient(미분) 값을 사용해 업데이트를 수행

: Gradient 값은 각 가중치마다 정해지고 Backpropagation(역전파)을 통해 구할 수 있음

 

- Backpropagation: Forward Propagation(순전파)의 반대 방향

 

- 딥러닝 모델의 학습 순서
1. 학습용 feature 데이터를 입력하여 예측값 구하기(순전파)

2. 예측값과 실제값 사이의 오차 구하기(Loss 계산)

3. Loss를 줄일 수 있는 가중치 업데이트(역전파)

4. 1~3반복하여 Loss를 최소로 하는 가중치 얻는다.

 

 

TensorFlow

: 딥러닝 프레임워크, 다양한 디바이스(클러스터 컴퓨터 ~ 스마트폰)에서 동작가능

 

딥러닝 모델 구현 순서

1. 데이터 전처리

- Tensorflow 딥러닝 모델은 Tensor 형태의 데이터를 입력 받음

- Tensor: 다채원 배열로서 tensorflow에서 사용하는 객체

- 데이터 -> Tensor형태로 변환 -> Tensorflow 딥러닝 모델

 

tf.data.Dataset

- tf.data.Dataset.from_tensor_slices((feature.values, labels.values))

 

Epoch, Batch

- Dataset을 한 번에 넣는 것이 아님, Batch size(mini-batch)로 쪼갬

- Epoch: 전체 데이터 셋에 대해 한 번 학습을 완료한 상태

- Batch: 나누어진 데이터 셋(mini-batch)

- iteration: epoch을 나누어 실행하는 횟수

 

ex) 총 데이터 1000개, Batch size: 100개

1 iteration = 100개 데이터에 대해 학습

1 epoch = 1000 / batch size  = 10 iteration

 

tf.data.Dataset.from_tensor_slices(feature.values, label.values))

dataset = dataset.batch(32) # batch size를 32로 설정

 

 

2. 딥러닝 모델 구축

- Keras: 텐서플로우의 패키지로 제공되는 고수준 API,  딥러닝 모델을 간단하고 빠르게 구현

- 모델 클래스 객체 생성: tf.keras.models.Sequential() # 괄호안 Layer 추가

 

Input Layer의 입력 형태 지정

: 맨 처음 Hidden Layer는 Input Layer의 입력 형태에 대한 정보가 필요함 

--> input_shape / input_dim을 설정한다.

ex) model = tf.keras.models.Sequential([tf.keras.layers.Dense(10, input_dim=2, activation='sigmoid')]) # 2개의 입력변수, 10개의 노드 

ex) model = tf.keras.models.Sequential([tf.keras.layers.Dense(10, input_shape=(3, )) # 입력 변수 3개

ex) model = tf.keras.models.Sequential([tf.keras.layers.Dense(10, input_dim=3) # 입력 변수 3개

 

모델의 각 Layer 구성: tf.keras.layers.Dense(units, activation) # units: 레이어 안의 Node수, activation: 적용할 activation 함수 설정(sigmoid, ReLu)

 

Model에 Layer 추가

ex) model = tf.keras.models.Sequential()

model.add(tf.keras.layers.Dense(10, input_dim=2, activation='sigmoid')) 

 

 

3. 모델 학습

모델 학습 방식을 설정위한 함수

model.compile(optimizer, loss) # optimizer(최적화 방법) = Adam, sgd / loss(손실 함수 설정, (실제 - 예측)^2 등)

ex) MSE, SGD 사용

model.compile(loss='mean_squared_error', optimizer='SGD')

model.fit(dataset, epochs=100)

 

 

 

4. 평가 및 예측

모델을 평가하기 위한 메소드

model.evaluate(x,y) # x는 test data, y는 test data의 label

ex) model.evaluate(X_test, Y_test)

 

모델로 예측을 수행하기 위한 함수

model.predict(x) # 예측하고자 하는 데이터

ex) prediced_labels_test = model.predict(X_test)

 

 

반응형

'AI > Deep Learning' 카테고리의 다른 글

퍼셉트론은 무엇인가  (0) 2022.09.17