[혼공단 7기] 혼공머신 6주차 미션

코덩이·2022년 2월 27일
0

혼공머신

목록 보기
7/7
post-thumbnail

06. 비지도 학습


07-1. 인공 신경망

🔈 인공 신경망

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

  • 이름이 신경망이지만 시렞 우리 뇌를 모델링한 것은 아니다. 신경망은 기존의 머신러닝 알고리즘으로 다루기 어려웠던 이미지, 음성, 텍스트 분야에서 뛰어난 성능을 발휘하며, 인공 신경망 알고리즘을 종종 딥러닝이라고도 부른다.

🎉 기본 미션

Ch.07(07-1) 확인 문제 풀고, 풀이 과정 정리하기

1. 어떤 인공 신경망의 입력 특성이 100개 이고 밀집층에 있는 뉴런 개수가 10개일 때 필요한 모델 파라미터의 개수는 몇 개 인가요?
- 정답 ③ 1,010개
- 풀이과정

  • 100개의 뉴런과 10개의 출력층 뉴런이 모두 연결되고 출력층의 뉴런마다 하나의 절편이 있기 떄문에 총 1010개의 모델 파라미터가 있다.

    🔈 밀집층

    가장 간단한 인공 신경망의 층이다.
    • 인공 신경망에는 여러 종류의 층이 있다. 밀집층에서는 뉴런들이 모두 연결되어 있기 때문에 완전 연결 층이라고도 부른다. 특별히 출력층에 밀집층을 사용할 때는 분류하려는 클래스와 동일한 개수의 뉴런을 사용한다.

2. 케라스의 Dense 클래스를 사용해 신경망의 출력층을 만들려고 합니다. 이 신경망이 이진 분류 모델이라면 activation 매개변수에 어떤 활성화 함수를 지정해야 하나요 ?

  • 정답 ② sigmoid
  • 풀이과정

    🧱 Dense

    신경망에서 가장 기본 층인 밀집층을 만드는 TensorFlow 의 클래스
    • 이 층에 첫 번재 매개변수에는 뉴런의 개수를 지정한다.
    • activation 매개변수에는 사용할 활성화 함수를 지정한다. 대표적으로 'sigmoid', 'softmax' 함수 가 있다. 아무것도 지정하지 않으면 활성화 함수를 사용하지 않는다.
    • 케라스의 Sequential 클래스에 맨 처음 추가되는 층에는 input_shape 매개변수로 입력의 크기를 지정해야 한다.

    📈 sigmoid 함수

    값을 0과 1사이로 압축할 수 있다. 또한 입력값이 0.5 이상이면 1, 이하면 0을 출력하기 때문에 이진 분류 모델에 적합하다.

3. 케라스 모델에서 손실함수와 측정지표등을 지정하는 메서드는 무엇인가요?
- 정답 ④ compile()
- 풀이과정

📈 compile()

모델 객체를 만든 후 훈련하기 전에 사용할 손실 함수와 측정 지표등을 지정하는 TensorFlow의 메소드이다.
loss 매개변수에 손실 함수를 지정한다.

  • 이진 분류일 경우 : binary_crossentropy
  • 다중 분류일 경우 : categorical_crossentropy
  • 클래스 레이블이 정수일 경우 : sparse_categorical_crossentropy
  • 회귀 모델일 경우 : mean_square_error

컴파일 메서드를 통해 모델의 손실함수와 측정지표를 지정해 줄 수 있다.

4. 정수 레이블을 타깃으로 가지는 다중 분류 문제일 때 케라스 모델의 compile() 메서드에 지정할 손실 함수로 적절한 것은 무엇인가요?
- 정답 ① 'sparse_categorical_crossentropy'
- 풀이과정

🔈 원-핫 인코딩

원-핫 인코딩은 정숫값을 배열에서 해당 정수 위치의 원소만 1이고 나머지는 모두 0으로 변환한다.

  • 다중 분류에서 출력층에서 만든 확률과 크로스 엔트로피 손실을 계산하기 위해서 이런 변환이 필요하다. 텐서플로에서는 'sparse_categorical_crossentropy' 손실을 지정하면 이런 변환을 수행할 필요가 없다.

📈 sparse_categorical_crossentropy

손실함수 중 하나이며 클래스 레이블이 정수일 경우 사용한다.

  • 정수로 된 타깃값을 바로 크로스 엔트로피 손실을 계산하는데에 사용할 수 있다. 만일 타깃값이 원핫인코딩을 통해 0과 1의 변수로 준비되어 있다면 "categorical_crossentropy" 를 사용하면 된다.

마지막 6주차 후기

  • 6주차에 또다시 난이도가 갑자기 뛰어 오르네요... 저는 기본 과제 문제를 겨우 푸는 게 한계였습니다.
  • 실습은 시간이 나면 다시 한번 해보고 정리하는 걸로!
  • 전부 소화하지는 못했지만 2회독, 3회독에는 점점 아는 것이 늘어날 것이기 때문에 첫 1회독을 함께 해준 혼공족 스터디에게 감사드립니다.
  • 매주 응원의 메시지 남겨주시는 족장님에게도 감사드립니다.
  • 앞으로 계속 공부해 나갈 것을 약속합니다!
  • 모두모두 수고 많으셨어요~! 🥳
profile
개발공부중

0개의 댓글