[딥러닝] Intro to TensorFlow
프로젝트 소개
프로젝트 동기
- 생활코딩의 머신러닝1 강좌를 들은 뒤 딥러닝에도 흥미가 생겼고 실제로 코드를 작성하며 실습하고 결과를 보며 배워 나가고 싶어 진행하게 되었습니다.
프로젝트 언어 및 환경
- 프로그래밍 환경: Google Colabolatory
- 프로그래밍 언어: Python
- 딥러닝 라이브러리: TensorFlow
1. 오리엔테이션
머신러닝 알고리즘
- 이 강좌에서 다룰 지도학습(supervised learning)의 분류(classification)와 회귀(regression)와 같은 문제들을 풀기 위한 방법입니다.
- 대표적으로 Decision Tree, Random Forest, KNN, SVM, Neural Network가 있습니다.
Neural Network = 인공신경망 = Deep Learning
- 사람의 두뇌가 동작하는 방법을 모방하여 기계가 학습을 할 수 있도록 고안된 알고리즘입니다.
- 뉴런(Neuron) 이라는 세포들로 촘촘하게 연결되어 있는 사람의 뇌처럼 뉴런들로 연결되어 있는 신경망을 인공적으로 만들었다는 의미에서 인공신경망이라고도 합니다.
- 인공신경망을 깊게 쌓아서 만들었다는 표현으로 Deep Learning이라는 단어를 사용하기 시작했습니다.
- 결과적으로 Neural Network, 인공신경망, Deep Learning은 모두 인간의 신경을 모방한 이론을 가르키는 같거나 비슷한 말입니다.
라이브러리
- 구체적인 딥러닝의 원리를 몰라도 코드만 작성하면 딥러닝으로 문제를 해결할 수 있는 도구들입니다.
- 대표적으로 TensorFlow, PyTorch, Caffe, Theano가 있습니다.
2. 목표와 전략
목표
- 딥러닝 코드들의 사용법을 알고 각자의 데이터로 놀아볼 수 있게 되는 것입니다.
공부 전략 (aka 지도 학습법)
- 원인이 되는 간단한 코드를 작성하고 경험합니다.
- 결과를 보며 코드의 동작과 학습과정을 확인합니다.
- 해당 코드를 어떻게 이용하면 좋을지 추측합니다.
- 위의 과정을 반복하며 코드와 알고리즘 동작에 익숙해집니다.
3. 지도학습의 빅픽쳐
지도학습의 과정
- 과거의 데이터를 준비합니다.
- 모델의 구조를 만듭니다.
- 데이터로 모델을 학습(FIT)합니다.
- 모델을 이용합니다.
4. 표를 다루는 도구 판다스
실습을 통해 배울 도구들
- 파일 읽어오기:
pd.read_csv('/경로/파일명.csv')
- 모양 확인하기:
print(데이터.shape)
- 칼럼 선택하기:
데이터[['칼럼명1', '칼럼명2', '칼럼명3']]
- 칼럼 이름 출력하기:
print(데이터.columns)
- 맨 위 5개 관측치 출력하기:
데이터.head()
5. 첫 번째 딥러닝 - 레모네이드 판매 예측
손실(Loss)의 의미
- 각 epoch(학습의 횟수)마다 그 시점에 모델이 얼마나 정답에 가까이 맞추고 있는지 평가하는 지표입니다.
- 예측과 결과를 비교하여 구한 차이의 제곱값들의 평균입니다.
- loss가 0에 가까워질수록 학습이 잘 된 모델이 되었다고 할 수 있습니다.
- epoch마다 loss가 0에 가까워지고 있는지 확인하며 loss가 원하는 수준으로 떨어질 때까지 반복해서 학습을 시키면 됩니다.
6. 두 번째 딥러닝 - 보스턴 집값 예측
- 주어진 값을 순서대로 정렬한 다음에 그 중에서 가장 가운데에 있는 값이 중앙값(median value) 입니다.
- 중앙값과 함께 집단을 대표하기 위해 사용하는 값으로 평균값(average value) 이 있습니다.
- 일반적으로 평균값이 집단을 대표하기 위해 좋은 지표이지만 너무 높은 값이나 너무 낮은 값이 평균값을 취약하게 만들어버리는 경우가 있습니다.
- 이렇게 전체 집단의 수치와 비교하여 상이하게 높거나 낮아서 평균의 대표성을 무너뜨리는 값들을 이상치(outlier) 라고 합니다.
- 이상치로 인해 평균이 대표성을 띠지 못하는 경우에 그 대안으로 사용하는 값이 중앙값입니다.
퍼셉트론 (Perceptron)
y = w1x1 + w2x2 + ... + w13x13 + b
- 인공신경망에서 두뇌 세포 뉴런의 역할을 하는 것이 퍼셉트론(Perceptron) 입니다.
- 위의 식에서 각 w는 가중치(weight) 를 뜻하고, b는 편향(bias) 을 뜻합니다.
7. 세 번째 딥러닝 - 아이리스 품종 분류
원핫인코딩 (onehot-encoding)
- 범주형 데이터를 1과 0의 데이터로 바꿔주는 과정을 원핫인코딩(onehot-encoding) 이라고 합니다.
- 딥러닝 모델을 사용하기 위해서는 모든 범주형 변수를 원핫인코딩 해줘야 합니다.
소프트맥스 (Softmax)
- 분류 예측을 비율로 예측하기 위해 소프트맥스(Softmax) 를 사용합니다.
- 소프트맥스 함수는 값을 0과 1사이의 값으로 변환해줍니다.
- 회귀모델에서는 Identity 함수가, Softmax 함수는 분류모델에서 사용됩니다.
- Identity 함수는 값을 바꾸지 않은 형태 그대로를 내보내는 함수입니다.
- 이렇게 y의 값의 형태를 바꿔주는 모든 함수들을 활성화(activation) 함수 라고 부릅니다.
Cross Entropy
- 분류모델에 사용하는 loss입니다.
- 회귀모델에는 MSE(Mean Squared Error) 를 사용합니다.
- 분류모델에서는 사람이 보기에 더 좋은 평가 지표로 정확도(accuracy) 를 사용하기도 합니다.
- 1은 정확도 100%를, 0은 정확도 0%를 뜻합니다.
8. 히든레이어
히든레이어 (hidden layer)
- 입력 부분(input layer)과 출력 부분(output layer) 사이에 추가한 부분을 히든레이어(hidden layer) 라고 부릅니다.
- 입력 부분과 히든레이어를 연결하는 모델, 히든레이어와 출력부분을 연결하는 모델, 이렇게 각각의 모델을 연속적으로 연결하여 하나의 거대한 신경망을 만드는 것이 딥러닝, 인공신경망 입니다.
부록1. 데이터를 위한 팁
데이터 타입 조정
- 변수(칼럼) 타입 확인
- 변수를 범주형으로 변경
데이터['칼럼명'].astype('category')
- 변수를 수치형으로 변경
데이터['칼럼명'].astype('int')
데이터['칼럼명'].astype('float')
- NA 값의 처리
부록2. 모델을 위한 팁
Leave a comment