[혼자 공부하는 머신러닝 + 딥러닝] 17강_인공 신경망: 간단한 인공 신경망 모델 만들기

17강_인공신경망: 간단한 인공 신경망 모델 만들기



패션 MNIST

  • MNIST
    • 딥러닝을 처음 배울 때 많이 사용하는 데이터 셋.
    • 0~9 까지의 숫자로 이루어져 있음
    • MNIST 와 크기, 개수가 동일하지만 숫자 대신 패션 아이템으로 이루어진 데이터.
  • 텐서플로우(케라스)를 사용해 데이터를 불러옴


로지스틱 회귀로 패션 아이템 분류하기 

  • 확률적 경사 하강법
    • 샘플을 하나씩 꺼내서 모델을 훈련하는 방법.
  • 넘파이 배열의 바이트 크기
    • nbytes 속성에 저장되어 있음.


인공 신경망

  • 출력층
    • 신경망의 최종 값을 만든다는 의미
  • 뉴런
    • z 값을 계산하는 단위
  • 유닛
    • 뉴런이라는 표현 대신에 부름
  • 입력층
    • 픽셀값 자체, 특별한 계산을 수행하지 않음. 
  • 1943년 워런 매컬러와 월터 피츠가 제안한 뉴런 모델
    • 매컬러-피츠 뉴런
      • 생물학적 뉴런에서 영감을 얻음
  • 기존의 머신러닝 알고리즘이 잘 해결하지 못했던 문제에서 높은 성능을 발휘하는 새로운 종류의 머신러닝 알고리즘일 뿐.
  • 딥러닝
    • 인공신경망과 거의 동의어로 사용됨
    • 혹은 심층 신경망을 딥러닝이라고 함. 
      • 여러 개의 층을 가진 인공 신경망



텐서플로와 케라스

  • 텐서플로
    • 구글이 2015년 11월 오픈소스로 공개한 딥러닝 라이브러리
    • 알파고가 이세돌 9단을 이겨 폭발적 인기 끔.
  • 케라스
    • 텐서플로의 고수준 API 
    • 2015년 3월 프랑소와 숄레가 만든 딥러닝 라이브러리
      • 그래픽 처리 장치인 GPU 사용하여 인공 신경망 훈련 (벡터와 행렬 연산에 매우 최적화)
    • 멀티-백엔드 케라스



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

  • 인공 신경망에서 교차 검증을 사용하지 않고 검증 세트를 사용하는 이유
    • 딥러닝 분야의 데이터셋은 충분히 크기 때문에 검증 점수가 안정적
    • 교차 검증을 수행하기에는 훈련 시간이 너무 오래 걸리기 때문. 
  • 밀집층
  • 완전 연결층
  • 활성화 함수
    • 소프트맥스와 같이 뉴런의 선형 방정식 계산 결과에 적용되는 함수



인공 신경망으로 패션 아이템 분류하기

  • 케라스 모델은 훈련하기 전 설정 단계가 있고 model 객체의 compile() 메서드에서 수행 (손실 함수의 종류 지정, 계산하고 싶은 측정값 지정)
  • 양성 클래스와 음성 클래스에 대한 크로스 엔트로피 계산
  • 원-핫 인코딩
    • 타깃값을 해당 클래스만 1이고 나머지는 모두 0인 배열로 만드는 것
    • 다중 분류에서 크로스 엔트로피 손실 함수를 사용하려면 0,1,2 와 같이 정수로 된 타깃값을 원-핫 인코딩으로 변환해야함 
    • sparse_categorical_crossentropy
  • 케라스는 에포크마다 걸린 시간과 손실(loss), 정확도(accuracy)를 출력해 줌. 
  • 검증 세트에서 모델의 성능 확인 (evaluate() 메서드)


인공 신경망 모델로 성능 향상

  • MNIST 데이터셋 사용
  • 로지스틱 손실함수를 사용한 SGDClassifier 모델로 교차 검증 점수를 확인
  • 케라스를 사용해 간단한 인공 신경망 모델을 만들어 패션 아이템을 분류함. 
    • 경사 하강법 사용한 로지스틱 회귀 모델과 거의 비슷
  • 신경망에서의 손실 함수 계산법과 원-핫 인코딩
  • 사이킷런의 SGDClassifier와 케라스의 Sequential 클래스 사용법의 차이


키워드로 끝내는 핵심 포인트

  • 인공 신경망
    • 생물학ㅈ적 뉴런에서 영감을 받아 만든 머신러닝 알고리즘
    • 기존의 머신러닝 알고리즘으로 다루기 어려웠던 이미지, 음성, 텍스트 분야에서 뛰어난 성능을 발휘하면서 크게 주목받고 있으며 종종 딥러닝이라고도 부름
  • 텐서 플로우 
    • 구글이 만든 딥러닝 라이브러리로 매우 인기가 높음. 
    • CPU와  GPU를 사용해 인공신경망 모델을 효율적으로 훈련하며 모델 구축과 서비스에 필요한 다양한 도구를 제공함. 
    • 텐서플오우 2.0부터는 신경망 모델을 빠르게 구성할 수 있는케라스를 핵심 API로 채택함. 케라스를 사용하면 간단한 모델에서 아주 복잡한 모델까지 손쉽게 만들 수 있음
  • 밀집층
    • 가장 간단한 인공 신경망의 층
    • 인공 신경망에는 여러 종류의 층이 있음.
    • 밀집층에서는 뉴런들이 모두 연결되어 있기 때문에 완전 연결 층이라도 부름. 
    • 특별히 출력층에 밀집층을 사용할 때는 분류하려는 클래스와 동일한 개수의 뉴런을 사용. 
  • 원-핫 인코딩
    • 정숫값을 배열에서 해당 정수 위치의 원소만 1이고 나머지는 모두 0으로 변환함. 이런 변환이 필요한 이유는 다중 분류에서 출력층에서 만든 확률과 크로스 엔트로피 손실을 계산하기 위해서임. 
    • sparse_categorical_entropy 손실 지정


핵심 패키지와 함수

  • Tensorflow
    • Dense
      • 신경망에서 가장 기본 층인 밀집층을 만드는 클래스
    • Sequenrial
      • 케라스에서 신경망 모델을 만드는 클래스 
    • compile()
      • 모델 객체를 만든 후 훈련하기 전에 사용할 손실 함수와 측정 지표 등을 지정하는 메서드
    • fit()
      • 모델을 훈련하는 메서드
    • evaluate()
      • 모델 성능을 평가하는 메서드

확인 문제

  • 어떤 인공 신경망의 입력 특성이 100 개 이고 밀집층에 있는 뉴런 개수가 10개 일 때 필요한 모델 파라미터의 개수는 몇개 인가?
  • 케라스의 Dense 클래스를 사용해 신경망의 출력층을 만들려고 함. 
  • 이 신경망이 이진 분류 모델이라면 activation 매개변수에 어떤 활성화 함수를 지정해야하나?
  • 케라스 모델에서 손실 함수와 측정 지표 등을 지정하는 메서드는 ?
  • 정수 레이블을 타깃으로 가지는 다중 분류 문제일 때 케라스 모델의 compile() 메서드에 지정할 손실 함수로 적절한 것은 무엇인가?




댓글

이 블로그의 인기 게시물

[솔트룩스] 새싹 인공지능 응용 SW 개발자 양성과정 | 24일차 | 5. 머신러닝 (2)

[혼자 공부하는 머신러닝 + 딥러닝] 10강_확률적 경사 하강법 알아보기