본문 바로가기

study

혼공 머신러닝/딥러닝 6주차

7장부터 딥러닝 파트가 시작됩니다.

 

7장 : 딥러닝

☞ 대표적인 알고리즘 : 인공신경망

☞ 대표적인 신경망 알고리즘 : 텐서플로, 케라스

 

 기본미션

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

① 1,000개

1,001개

1,010개

 1,100개

☞ 정답: 3

☞ 풀이

    • 입력층에 X0, X1,...., Xn 영역에 100개가 입력됨
    • 뉴런 : (P.348참고) 출력층의 파란색 동그라미를 계산하는 단위!! 이것이 10개로 나온다
    • 모델 파리미터는 머신러닝에서도 학습한것처럼 최적의 값을 찾아가기 위한 값인데요
      입력층 x 은닉층(Hidden Layer)와의 관계가 모든 경우의 수만큼 엮이기 때문에 100*10 = 1,000만큼 선이 곱해집니다.
      절편(보통 수식으로 b로 표기합니다.) // 절편은 뉴런마다 더해집니다. 여기서 뉴런이 10개 이므로 1,000 + 10 = 1,100 입니다.
      y = ax + b (a는 기울기, b y 절편)  y = wx + b (w 가중치, b 바이어스)

2. 케라스의 Dense클래스를 사용해 신경망의 출력층을 만들려고 합니다.

이 신경망이 이진 분류모델이라면 activtion매개변수에 어떤 활성화 함수를 지정해야 하나요?

① binary

sigmoid

softmax

relu

☞ 정답: 2

☞ 풀이

이진분류는 0,1 즉, 2분류로 구분해서 뉴런을 1개 층으로 출력층을 구성합니다.

  • 시그모이드 함수
    : 선형방정식을 0~1값, 또는 -1 ~ 1값을 가진다.

3. 케라스 모델에서 손실함수와 측정지표 등을 지정하는 메소드는 무엇인가요?

① configure()

fit()

set()

compile()

☞ 정답: 4

☞ 풀이 : P.355

  • 훈련하기 전에 model.compile()을 수행
    실습예제에서는 model.complie(loss=, metrics=)에 대해서 사용하고 있다.
    loss : 손실함수 정의 
    metrics : 측정지표 정의

compile함수 안에서는 다양한 옵션값을 사용할수가 있습니다.

https://keras.io/api/metrics/ keras홈페이지에 가시면 다양한 옵션에 대해서 손실/측정지표의 인자값 확인이 가능합니다.

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

① spare_categorial_crossentropy (타깃값이 정수인 다중 분류)

categorical_crossentropy (타깃값이 원핫인코딩된 경우)

binary_crossentropy (이진분류에서 사용)

mean_square_error  (회귀문제에서 사용)

☞ 정답: 1

☞ 풀이: P.358에 spare_categorial_crossentropy에 대한 설명이 있습니다.

https://keras.io/api/losses/probabilistic_losses/#sparsecategoricalcrossentropy-class

저희가 사용하는 loss class가 SparseCategoricalCrossentropy에 정의되어 있습니다.

 선택미션

1. 다음 중 모델의 add() 메소드의 사용법이 올바른 것은 어떤 것인가요?

① model.add(keras.layers.Dense)

model.add(keras.layers.Dense(10, activation='relu'))

model.add(keras.layers.Dense, 10, activation='relu')

model.add(keras.layers.Dense) (10, activation='relu')

☞ 정답: 2

☞ 풀이

add(), 실제 딥러닝을 하기 위해서 층을 추가하는 작업이다. 

Dense클래스에 인자값으로 정보를 전달해주어야 합니다.

model.add(keras.layers.Dense(10, activation='relu')

  • 첫번째 인수 : 10은 뉴런의 갯수를 지정합니다.
  • 두번째 인수 : activation은 사용할 활성화 함수를 지정합니다.
    • ex : sigmoid, softmax, rele등 사용할 함수명을 입력합니다.
    • 필수값이 아니며, activation 없을때에는 활성화 함수를 사용하지 않습니다.

https://keras.io/api/layers/merging_layers/add/

2. 크가가 300x300인 입력을 케라스 층으로 펼치려고 합니다. 다음 중 어떤 층을 사용해야 하나요?

① Plate

Flatten

Normalize

④ Dense

☞ 정답: 2

☞ 풀이

    Flatten층은 특성 맵을 일열로 펼쳐서 구성을 합니다. 

    (7,7,64)크기의 맵의 7*7*64를 통해서 (3136,)으로 구성됩니다.

    영어의 Flat의 의미처럼 평평하게 펼친다는 의미로 이해하면 됩니다.

 

3. 다음 중에서 이미지 분류를 위한 심층 신경망에 널리 사용되는 케라스의 활성화 함수는 무엇인가요?

① linear

sigmoid

relu

④ tanh

☞ 정답: 3

☞ 풀이

  • relu는 이미지 분류할때 사용되는 대표적인 활성화 함수 입니다.
  • 그러면 왜 relu함수를 이미지 학습할때 많이 사용하는가?

P.377 (Relu함수)

입력이 양수인 경우 마치 활성화 함수가 없는것처럼 그냥 입력을 통과 시키고, 음수인 경우에는 0을 만듭니다.

Relu함수 max(0,z)로 사용하는 경우, 0보다 크면 z를 출력하고, 0보다 작으면 0을 출력합니다.

  • 기울기 소실문제가 발생하지 않는다.
  • 학습속도가 매우 빠르다.

4. 다음 중 적응적 학습률을 사용하지 않는 옵티마이저는 무엇인가요?

① SGD

Adagrad

RMSprop

④ Adam

☞ 정답: 1

☞ 풀이

  • SGD는 기본경사하강법을 모멘텀, 네스테로프 모멘텀 알고리즘을 구현한 클래스 입니다.
    • learing_rate 매개변수로 학습률을 지정하며, 기본값은 0.01입니다.
    • momentum 매개변수에 0이상의 값을 지정하면, 모멘텀 최적화를 수행합니다.
    • nesterov 매개변수를 True로 설정하면, 네스테로프 모멘텀 최적화를 수행합니다.

'study' 카테고리의 다른 글

혼공 파이썬 2주차  (0) 2022.07.05
혼공 파이썬 1주차  (0) 2022.07.04
혼공 머신러닝/딥러닝 5주차  (0) 2022.02.18
혼공 머신러닝/딥러닝 4주차  (0) 2022.02.10
혼공 머신러닝/딥러닝 3주차  (0) 2022.01.26