혼공단/혼공단 5기

혼자 공부하는 머신러닝 + 딥러닝 7장 - 인공 신경망

하양훈 2021. 3. 5. 21:10
반응형

1. 인공 신경망

- 생물학적 뉴런에서 영감을 받아 만든 머신러닝 알고리즘.

- 기존의 머신러닝 알고리즘으로 다루기 힘들었던 이미지, 음성, 텍스트 분야에서 뛰어난 성능을 발휘하면서 주목받고 있다.

- 종종 딥러닝이라 부르기도 한다.

 

- 출력층 : z1 ~ z10에 해당, 클래스를 예측하여 신경망의 최종값을 만드는 층

- 뉴런 : z의 값을 계산하는 단위, 현재는 유닛이라 부르는 사람이 더 많아지고 있다.

- 입력층 : x1~x784에 해당, 픽셀값 그 자체이며 계산을 수행하진 않는다.

 

 

2. 텐서플로와 케라스

 

<텐서플로>

 

- 구글이 2015년 11월 오픈소스로 공개한 딥러닝 라이브러리이다.

- 텐서플로에는 저수준 API와 고수준 API가 있는데, 케라스가 텐서플로의 고수준 API이다.

- 케라스는 2015년 3월 프랑소와 숄레가 만든 딥러닝 라이브러리로, GPU를 사용하여 인공 신경망을 훈련한다.

- 케라스 라이브러리는 직접 GPU연산을 수행하지는 않지만, GPU연산을 수행하는 다른 라이브러리(텐서플로, 씨아노,CNTK 등)를 백엔드로 사용한다.

 

 

3. 인공 신경망으로 모델 만들기

 

- 케라스의 레이어 패키지 안에는 다양한 층이 준비되어 있다. 그 중 가장 기본이 되는 층은 밀집층(Dense Layer)이다.

- 밀집층은 양쪽의 뉴런이 모두 빽빽하게 연결된 층으로, 완전 연결층이라고도 부른다.

 

[밀집층 실습코드]

#밀집층 생성
dense = keras.layers.Dense(10, activation='softmax', input_shape=(784,))

#이 밀집층을 가진 모델 생성
model = keras.Sequential(dense)

 

- Dense 클래스에는 뉴런 개수, 뉴런의 출력에 적용할 함수, 입력의 크기를 매개변수로 지정한다.

- 위에서는 뉴런의 출력에 적용하는 함수를 소프트맥스로 지정했는데, 이런 함수를 활성화 함수라고 부른다.

- 활성화 함수는 뉴런의 출력에 바로 적용되기 떄문에 또 다른 층의 일부라고 표현하기도 한다.

 

#모델 훈련전 설정
model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy')

#모델 훈련
model.fit(train_scaled, train_target, epochs=5)

#결과값 측정
model.evaluate(val_scaled, val_target)

 

- compile() 메서드로 모델 훈련 전에 필요한 설정을 지정할 수 있다. 이때 손실함수의 설정(loss)는 꼭 지정해야 한다.

- 손실함수는 이진 분류일때 binary_corssentropy, 다중 분류일때 categorical_corssentropy를 지정한다.

- 원-핫 인코딩 : 해당 정수위치의 원소만 1 나머지는 모두 0으로 변환하는 코딩 방법.

 

 

<Tensorflow 핵심 함수 추가 설명>

 

1. Dense()

 

- 신경망의 가장 기본층인 밀집층을 만드는 클래스

- 뉴런의 개수, 사용할 활성화 함수(activation) 등의 매개변수를 쓴다.

- 케라스의 Sequential 클래스에 맨 처음 추가되는 층은 input_shape 매개변수를 지정한다.

 

 

2. Sequential()

 

- 케라스에서 신경망 모델을 만드는 클래스

 

 

3. compile()

 

- 모델 객체를 만든 후 훈련하기 전에 사용할 손실함수와 측정 지표등을 지정하는 메서드

- loss : 손실함수 지정

(이진 분류일 경우 'binary_crossentropy',다중 분류일 경우 'sparse_categorical_crossentropy', 회귀 모델의 경우, mean_sqared_error'로 지정한다.)

- metrics : 훈련과정에서 측정하고 싶은 지표를 지정할 수 있다.

 

 

4. fit()

 

- 모델을 훈련하는 메서드

- 첫번째, 두번째 매개변수에 입력과 타깃데이터를 넣고, epoch 매개변수에 반복할 에포크 횟수를 지정한다.

 

 

5. evaluate()

 

- 첫번째, 두번째 매개변수에 입력과 타깃데이터를 넣고, 손실함수의 값과 metrics에서 지정한 측정 지표를 측정한다.

 


전체 소스 코드 : bit.ly/hg-07-1

반응형