17. 2. 간단한 분류 모델 구현하기
털과 날개의 유무로 판단
[(털의 유무),(날개의 유무)]
[1,0]
털은 있지만 날개가 없음
[1,1]
털도 있고 날개도 있음
18. 2. 간단한 분류 모델 구현하기
jupyter notebook 파일을 하나 만들고,
파일 이름을 ‘02’로 바꿔주세요.
19. 2. 간단한 분류 모델 구현하기
파일 이름을 변경하면
먼저 tensorflow와 numpy를 임포트 합니다.
20. 2. 간단한 분류 모델 구현하기
사용할 학습 데이터를 정의 합니다.
데이터 값에 따라 아래와 같이 분류할 수 있습니다.
조류 – [1,1], 포유류 - [1,0], 기타 - [0,0]
21. 2. 간단한 분류 모델 구현하기
입력 데이터 x가 [(털의 유무),(날개의 유무)]로 나타낸다면
출력 데이터(분류 결과)는 아래와 같이 표현합니다.
아래와 같이 [0,0,1], [0,1,0] 등의 이진법으로 분류 결과를 나타내는 방식을 ‘원-핫 인코딩’ 이라 합니다.
원-핫 인코딩에 대한 자세한 내용은 ‘밑바닥부터 시작하는 딥러닝’ 또는 본 교재를 참고하시기 바랍니다.
22. 2. 간단한 분류 모델 구현하기
이번에는 학습용 분류 결과 데이터(y)를 원-핫-인코딩로 표헌합니다.
학습용 입력값(x)와 결과값(y)는 동일한 순서로 매칭됩니다.
[(털),(날개)]
기타 - [0,0]
포유류 - [1,0]
조류 -[1,1]
24. 2. 간단한 분류 모델 구현하기
이제 신경망 모델을 구성하겠습니다.
이전에 선언한 입력, 결과 데이터를 입력하기 위해 플레이스 홀더를 선언합니다.
25. 2. 간단한 분류 모델 구현하기
그 다음 신경망을 결정하는 가중치와 편향 변수를 설정합니다.
가중치는 2행 3행 형태의 -1~1범위로 하는 균일(uniform)분포함수로 초기화 하고,
편향 b는 0으로 초기화 합니다.
26. 2. 간단한 분류 모델 구현하기
여기서 신경망을 1층으로 구현하면서
입력 데이터의 길이가 2이고, 출력 데이터의 길이가 3 이므로
가중치는 (2,3), 편향은 (3) 형태로 만듭니다.
X1
X2
+b1
+b2
+b3
y1
y2
y3
입력 데이터 형태
[1,1]
[1,0]
[0,0]
털 유무
날개 유무
기타
0
포유류
1
조류
2
R
E
L
U
x1*w1
x1*w2
x1*w3
x2*w1
x2*w2
x2*w3
27. 2. 간단한 분류 모델 구현하기
이 내적, 편향, 활성화함수 까지
신경망 연산을 구현하면 아래와 같습니다.
28. 2. 간단한 분류 모델 구현하기
출력 값을 만든 후 softmax 함수를 이용하여 다듬어 줍시다.
softmax 함수는 출력 점수들을 확률로 변환하여 줍니다.
이 데이터는 '기타’로 분류
29. 2. 간단한 분류 모델 구현하기
신경망 모델은 만들었지만 학습을 위해 손실 함수를 만듭시다.
여기서는 교차 엔트로피 오차 함수를 사용합니다.
이 함수 코드는 아래와 같습니다.
30. 2. 간단한 분류 모델 구현하기
학습 결과를 출력하는 코드를 작성합니다.
하지만 10000번 학습을 해도 잘 예측을 하지 못하고 있습니다.
신경망이 1층으로 되어있기 때문인데 더 깊이 만들면 더 나은 성능을 낼 수 있습니다.
W, b, model 등 결과 출력
x_data를 이용하여 예측한 값과 실제값 신경망이 얕아 정확하지 않습니다.
31. 2. 간단한 분류 모델 구현하기
조금 전 예측 결과 값을 받을때 argmax() 함수를 사용했습니다.
이 함수는 가장 높은 점수를 갖는 데이터의 인덱스를 반환하여 쉽게 분류할수 있도록 합니다.
아래와 같이 [0.53,0.24,0.23]으로 결과값(확률)이 나오면 가장 큰(argmax) ‘0.53’은 0번째 이므로 0을 반환합니다.
32. 2. 간단한 분류 모델 구현하기
간단하게 정확도를 출력하면 아래와 같습니다.
아래의 코드는 예측값과 실제값을 비교하여 정확도를 확률로 나타냅니다.