혼공단 13기 머신러닝+딥러닝

[혼공머신] 6주차_딥러닝

짐꾸러기 2025. 2. 22. 13:27

 

혼자 공부하는 머신러닝+딥러닝

 

 

 

 

 

 


 


 

숙제


 

 

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

 

① 1000개

② 1001개

③ 1010개

④ 1100개

 

 

풀이:

밀집층 10개 x 입력 100개 = 1000개의 가중치가 있고,

뉴런마다 1개의 절편이 있으므로

 

1000 + 10 = 1010개

 

답은 ③번!

 

 


 

 

 


 

 

 

인공 신경망: 생물학적 뉴런에서 영감을 받아 만든 머신러닝 알고리즘. 신경망은 기존의 머신러닝 알고리즘으로 다루기 어려웠던 이미지, 음성, 텍스트 분야에서 뛰어난 성능을 발휘하면서 크게 주목받고 있음.

텐서플로: 구글이 만든 딥러닝 라이브러리. CPU와 GPU를 사용해 인공 신경망 모델을 효율적으로 훈련하며 모델 구축과 서비스에 필요한 다양한 도구를 제공함. 케라스를 핵심 API로 채택 하였음.

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

원-핫 인코딩: 정숫값을 배열에서 해당 정수 위치의 원소만 1이고 나머지는 모두 0으로 변환. 다중 분류에서 출력츠엥서 만든 확률과 크로스 엔트로피 손실을 계산하기 위해서이다. 텐서플로에서는 ‘sparse_categorical_entropy’ 손실을 지정하면 이런 변환을 수행할 필요가 없다.

 

 

 

TensorFlow, Dense: 밀집층을 만드는 클래스. 첫 번째 매개변수에서는 뉴런의 개수 지정. activation 매개변수에서는 사용할 활성화 함수를 지정. ‘sigmoid’, ‘softmax’함수가 대표적. 아무것도 지정하지 않으면 활성화 함수를 사용하지 않음. 케라스의 Sequential 클래스에 맨 처음 추가되는 층에는 input_shape 매개변수로 입력의 크기를 지정해야 함.

Sequential: 케라스에서 신경망 모델을 만드는 클래스. 클래스 객체를 생성할 때 신경망 모델에 추가할 층을 지정할 수 있다. 추가할 층이 1개 이상일 경우 파이썬리스트로 전달.

compile() 모델 객체를 만든 후 훈련하기 전에 사용할 손실 함수와 측정 지표 등을 지정하는 메서드. loss 매개변수에 손실 함수를 지정. 이진 분류일 경우’binary_crossentropy’, 다중 분류일 경우 ‘categorial_crossentropy’를 지정. 클래스 레이블이 정수일 경우 ‘sparse_categorical_crossentropy’로 지정. 회귀 모델일 경우 ‘mean_square_error’등으로 지정할 수 있음. metrics 매개변수에 훈련 과정에서 측정하고 싶은 지표를 지정할 수 있다. 측정 지표가 1개 이상일 경우 리스트로 전달함.

fit()은 모델을 훈련하는 메서드. 첫 번째와 두 번째 매개변수에 입력과 타깃 데이터를 전달함. epochs 매개변수에 전체 데이터에 대해 반복할 에포크 횟수를 지정함.

evaluate()는 모델 성능을 평가하는 메서드. 첫 번째와 두 번째 매개변수에 입력과 타깃 데이터를 전달. compile() 메서드에서 loss 매개변수에 지정한 손실 함수의 값과 metrics 매개변수에서 지정한 측정 지표를 출력함.

 

 

 

 

 

심층 신경망: 2개 이상의 층을 포함한 신경망.

렐루 함수: 이미지 분류 모델의 은닉층에 많이 사용하는 활성화 함수.

옵티마이저: 신경망의 가중치와 절편을 학습하기 위한 알고리즘 또는 방법. 케라스에는 다양한 경사 하강법 알고리즘이 구현되어 있음. 대표적으로 SGD, 네스테로프 모멘텀, RMSprop, Adam 등이 있음.

 

 

 

TensorFlow, add()는 케라스 모델에 층을 추가하는 메서드. 케라스 모델의 add() 메서드는 keras.laters 패키지 아래에 있는 층의 객체를 입력받아 신경망 몸델에 추가함. add() 메서드를 호출하여 전달한 순서대로 층이 차례대로 늘어남.

summary()는 케라스 모델의 정보를 출력하는 메서드. 모델에 추가된 층의 종류와 순서, 모델 파라미터 개수를 출력함. 층을 만들 때 name 매개변수로 이름을 지정하면 summary() 메서드 출력에서 구분하기 쉽다.

SGD는 기본 경사 하강법 옵티마이저 클래스. learning_rate 매개변수로 학습률을 지정하며 기본값은 0.01. momentum 매개변수에 0 이상의 값을 지정하면 모멘텀 최적화를 수행함. nesterow 매개변수를 True로 설정하면 네스테로프 모멘텀 최적화를 수행.

Adagrad는 Adagrad 옵티마이저 클래스. learning_rate 매개변수로 학습률을 지정하며 기본값은 0.001. Adagrad는 그레이디언트 제곱을 누적하여 학습률을 나눈다. initial_accumulator_value 매개변수에서 누적 초깃값을 지정할 수 있으며 기본값은 0.1.

RMSprop은 RMSprop 옵티마이저 클래스. learning_rate 매개변수로 학습률을 지정하며 기본값은 0.001. Adagrad처럼 그레이디언트 제곱으로 학습률을 나누지만 최근의 그레이디언트를 사용하기 위해 지수 감소를 사용함. rho 매개변수에서 감소 비율을 지정하며 기본값은 0.9.

Adam은 Adam 옵티마이저 클래스. learning_rate 매개변수로 학습률을 지정하며 기본값은 0.001. 모멘텀 최적화에 있는 그레이디언트의 지수 감소 평균을 조절하기 위해 beta_1 매개변수가 있으며 기본값은 0.9. RMSprop에 있는 그레이디언트 제곱의 지수 감소 평균을 조절하기 위해 beta_2 매개변수가 있으며 기본값은 0.999.

 

 

 


 

 

6주차!

완주를 마쳤다.

 

 

혼공단 13기는 끝났어도 나의 공부는 끝나지 않았다!!!

 

딥러닝에 대해 조금 더 알고 싶다.

챕터 8과 챕터 9도 빨리 공부하고

다른 책들도 읽어보며

 

인공지능 짱짱이 되어보겠따.