[Aiffel] 아이펠 7일차 개념 정리 및 회고

Gongsam·2022년 1월 4일
0

1. 개념 정리

1) Tensorflow란?

구글에서 오픈소스로 제공하는 라이브러리, 가장 널리 사용되고 있는 머신러닝 라이브러리 중 하나

텐서플로우 처음 시작하기

2) 인공지능 가위, 바위, 보 구현

1. 데이터 셋 확인하기

참고

2. 데이터 셋 로드

(x_train, y_train), (x_test, y_test) = mnist.load_data()
  • x_train, y_train : 학습용 데이터
  • x_test, y_test: 성능을 확인하기 위한 시험용 데이터

2 - 1. 데이터의 크기 확인하는 방법

# ex) 학습용 데이터 확인
print(x_train.shape)
>>> (60000, 28, 28) # 28*28 크기의 숫자 이미지가 6만장 

Train / Test / Validation set의 차이

  1. Train set
    모델을 학습하기 위한 데이터 셋. 학습엔 오직 train set만 사용한다.
  2. Test set
    학습과 검정이 완료된 모델의 성능을 평가하기 위한 데이터 셋
  3. Validation set
    학습이 이미 완료된 모델을 검증하기 위한 데이터 셋
    머신러닝 학습 과정이 정상적으로 진행되고 있는지, 오버피팅이 발생하지 않는지, 학습을 중단해도 되는지 등을 확인하고 싶을 때 사용

⏩ 일반적으로 데이터 셋은 6:2:2의 비율로 Train, validation, test set으로 나뉜다.

Test / Validation set의 차이점

검증용 데이터시험용 데이터
학습을 시키진 않지만 학습에 관여학습에 전혀 관여하지 않고 최종 성능 평가만을 위해 사용

3. 실습

github 코드 공유

✔✔✔ 🤔
숫자 손글씨 판단할 땐 채널 수 때문에 재설정했는데 가위바위보에선 안한 이유는?
손글씨를 판단할 땐 채널 수가 따로 설정되지 않은 상황이었지만 가위바위보 딥러닝 네트워크를 설정할 땐 받는 값에 채널 수가 설정되어 있어 따로 처리하지 않아도 됐다.

✔✔✔🤔
초반에 지나치게 낮은 정확도가 나온 이유는?
test set의 number of data를 따로 설정하지 않아 기본값 1500으로 들어가서 자꾸 값이 예상한 결과와 크게 차이가 났던 것 같다. training set을 300개로 했을 때보다도 낮은 결과가 나와서 왜 이런가 했는데 300으로 설정하니 33보다 높고, 비교적 일정한 값으로 개선된 결과가 나옴.

✔✔✔🤔
epoch란?

모든 학습 데이터 셋을 학습하는 수, 같은 데이터 셋이어도 가중치가 달라지기 때문에 모델이 추가적인 학습을 할 수 있다.
높일 수록 무작위 가중치에 대한 계산을 통해 적합한 파라미터를 찾을 확률이 높아지지만, 지나치게 높일 경우 과적합이 일어날 수 있다.

2. 회고

코드 자체는 숫자 손글씨 판단할 때 사용된 코드를 재활용 해서 괜찮았지만 그렇다고 코드를 제대로 이해한 건 아니다.
뭔가 기본적인 설명 없이 (딥러닝이란 무엇인지, 머신러닝과는 어떤 차이인지, 어떤 알고리즘을 어떤 원리로 사용하는지 등등..) 다짜고짜 만들어봐라! 하는 느낌이라 당황스러웠다. 물론 노드에서 코드를 이해하는 건 좋지만 고통받진 말고(?) 흥미를 느끼는 쪽이라고 하긴 하는데.. 그냥 혼란만 가중된 기분이다. 우선 위에 정리해둔 기본 개념이라도 챙겨 가야겠다..

참고

profile
🐬 파이썬 / 인공지능 / 머신러닝

0개의 댓글