스터디
스터디 범위
Chapter 07 딥러닝을 시작합니다 ▶️패션 럭키백을 판매합니다!
- 07-1 인공 신경망 ▶️ 텐서플로로 간단한 인공 신경망 모델 만들기
- 07-2 심층 신경망 ▶️인공 신경망에 층을 추가하여 심층 신경망 만들어 보기
- 07-3 신경망 모델 훈련 ▶️인경 신경망 모델 훈련의 모범 사례 학습하기
스터디 내용
07-1 인공 신경망
인공 신경망: 생물학적 뉴런에서 영감을 받아 만든 머신러닝 알고리즘으로, 신경망은 기존의 머신러닝 알고리즘으로 다루기 어려웠던 이미지, 음성, 텍스트 분야에서 뛰어난 성능을 발휘하면서 크게 주목받고 있습니다. 인공 신경망 알고리즘을 종종 딥러닝이라고도 부릅니다.
텐서플로: 구글이 만든 딥러닝 라이브러리, CPU와 GPU를 사용해 인공 신경망 모델을 효율적으로 훈련하며 모델 구축과 서비스에 필요한 다양한 도구를 제공합니다. 텐서플로 2.0부터는 신경망 모델을 빠르게 구성할 수 있는 케라스를 핵심 API로 채택 하였습니다.
- Dense(): 신경망에서 가장 기본 층인 밀집층을 만드는 클래스입니다. 이 층에 첫 번째 매개변수에는 뉴런의 개수를 지정하며, activation 매개변수에는 사용할 활성화 함수( ‘sigmoid’, ‘softmax’)를 지정합니다. 케라스의 Sequential 클래스에 맨 처음 추가되는 층에는 input_shape 매개변수로 입력의 크기를 지정해야 합니다.
- Sequential(): 케라스에서 신경망 모델을 만드는 클래스입니다. 이 클래스의 객체를 생성할 때 신경망 모델에 추가할 층을 지정할 수 있습니다. 추가할 층이 1 개 이상일 경우 파이썬 리스트로 전달합니다.
- compile(): 모델 객체를 만든 후 훈련하기 전에 사용할 손실 함수와 측정 지표 등을 지정하 는 메서드입니다. loss 매개변수에 손실 함수를 지정합니다. 이진 분류일 경우 ‘binary_crossentropy’, 다중 분류일 경우 ‘categorical_crossentropy’를 지정합니다. 클래스 레이블이 정수일 경우 ‘sparse_categorical_crossentropy’로 지정합니다. 회귀 모델일 경우 ‘mean_square_ error’ 등으로 지정할 수 있습니다. metrics 매개변수에 훈련 과정에서 측정하고 싶은 지표를 지정할 수 있습니다. 측정 지표가 1 개 이상일 경우 리스트로 전달합니다.
- fit(): 모델을 훈련하는 메서드입니다. 첫 번째와 두 번째 매개변수에 입력과 타깃 데이터를 전달합니다. epochs 매개변수에 전체 데이터에 대해 반복할 에포크 횟수를 지정합니다.
- evaluate(): 모델 성능을 평가하는 메서드입니다. 첫 번째와 두 번째 매개변수에 입력과 타깃 데이터를 전달합니다. compile() 메서드에서 loss 매개변수에 지정한 손실 함수의 값과 metrics 매개변수에서 지정한 측정 지표를 출력합니다.
- add(): 케라스 모델 에 층 을 추가하는 메서드. 케 라스 모델 의 add() 메서드는 keras.layers 패키지 아래에 있는 층의 객체 를 입력 받아 신경 망 모델 에 추가 합니다 . add ( ) 메서드 를 호출 하여 전달한 순서 대로 층 이 차례 대로 늘어 납니다.
- summary(): 케라스 모델의 정보를 출력하는 메서드. 모델에 추가된 층의 종류와 순서, 모델 파라미터 개수를 출력 합니다. 층을 만들 때 name 매개 변수로 이름을 지정하면 summary() 메서드 출력에서 구분하기 쉽습니다.
밀집층(Dence Layer): 밀집층에서는 뉴런들이 모두 연결되어 있기 때문에 완전 연결 층(Fully Connected Layer)이라고도 부릅니다. 특별히 출력층에 밀집층을 사용할 때는 분류하려는 클래스와 동일한 개수의 뉴런을 사용합니다.
원-핫 인코딩: 정숫값을 배열에서 해당 정수 위치의 원소만 1이고 나머지는 모두 0으로 변환 합니다. 이런 변환이 필요한 이유는 다중 분류에서 출력층에서 만든 확률과 크로스 엔트로피 손실을 계산하기 위해서 입니다. 텐서플로에서는 ‘sparse_categorical_entropy’ 손실을 지정하면 이런 변환을 수행할 필요가 없습니다.
07-2 심층 신경망
심층 신경망: 2개 이상의 층 을 포함한 신경망 입니다 . 종종 다층 인공 신경망 , 심층 신경망 , 딥 러닝 을 같은 의미 로 사용 합니다 .
Relu 함수: 이미지 분류 모델 의 은닉층 에 많이 사용 하는 활성화 함수 입니다 . 시그모이드함수는 층이 많을수록 활성화 함수 의 양쪽 끝에서 변화가 작기 때문에 학습이 어려워집니다 . 렐루 함수는 이런 문제가 없으며 계산도 간단 합니다 .
옵티마이저(Optimizer): 신경망 의 가중치 와 절편을 학습 하기 위한 알고리즘 또는 방법 을 말합니다 . 케라 스 에는 다양한 경사 하강 법 알고리즘 이 구현 되어 있습니다 . 대표 으로 SGD , 네스테로프 모멘텀 , RMSprop , Adam 등이 있습니다 .
- SGD:
- 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 입니다 .
미션
기본 미션
Ch 07(07-1) 확인 문제 풀고, 풀이 과정 정리하기
Q1. 어떤 인공 신경망의 입력 특성이 100개이고 밀집층에 있는 뉴런 개수가 10개일 때 필요한 모델 파라미터의 개수는 몇 개인가요? 1 1,000개 2 1,001개 3 1,010개 4 1,100개
A: 3번 1,010개, 입력특성을 포함하여 bias 값을 뉴런의 갯수에 곱한 값이 파라미터의 개수이기에 1,010개입니다.
Q2. 케라스의 Dense 클래스를 사용해 신경망의 출력층을 만들려고 합니다. 이 신경망이 이진 분류 모델이라면 activation 매개변수에 어떤 활성화 함수를 지정해야 하나요? 1 ‘binary’ 2 ‘sigmoid’ 3 ‘softmax’ 4 ‘relu’
A: 1번 'binary'. 이진분류모델의 경우 출력층 활성화 함수로 binary 를 지정해주어야 하며, 다중분류모델인 경우 softmax 활성화 함수를 지정해주어야 합니다.
Q3. 케라스 모델에서 손실 함수와 측정 지표 등을 지정하는 메서드는 무엇인가요? 1 configure() 2 fit() 3 set() 4 compile()
A: 4번 compile(). compile 함수에서 손실함수와 측정 지표 등을 지정합니다.
4. 정수 레이블을 타깃으로 가지는 다중 분류 문제일 때 케라스 모델의 compile() 메서드에 지정할 손실 함수로 적절한 것은 무엇인가요?
A: 1번 ‘sparse_categorical_crossentropy’, 정수 레이블을 타깃으로 가지는 다중 분류 문제일 때, 손실함수로 '‘sparse_categorical_crossentropy’'를 지정해주어야 합니다.
선택 미션
Ch 07(07-2) 확인 문제 풀고, 풀이 과정 정리하기
Q1. 다음 중 모델 의 add ( ) 메서드 사용법 이 올바른 것은 어떤 것인가요?
A: 2번. 모델 의 add ( ) 메서드 에는 층 의 객체 를 전달 해야 합니다 . ① 은 층 의 클래스 를 전달 하고 있고 , ③ 은 Dense 클래스 의 매개 변수 를 add ( ) 메서드 에 전달 합 니다 . ④ 는 add ( ) 메서드 에서 반환 하는 값 이 없기 때문에 함수 호출 오류 가 발생 합니다 .
Q2. 크기가 300 × 300인 입력을 케라스 층으로 펼치려고 합니다. 다음 중 어떤 층을 사용해야 하나요? 1 Plate 2 Flatten 3 Normalize 4 Dense
A: 2번 Flatten. 배치 차원 을 제외한 입력 의 차원 을 일렬 로 펼치 려면 Flatten 클래스 를 사용 합니다 .
Q3. 다음 중에서 이미지 분류를 위한 심층 신경망에 널리 사용되는 케라스의 활성화 함수는 무엇 인가요? 1 linear 2 sigmoid 3 relu 4 tanh
A: 3번 relu. 이미지 처리 작업 에 널리 사용 되는 렐루 활성화 함수입니다.
Q4. 다음 중 적응적 학습률을 사용하지 않는 옵티마이저는 무엇인가요. 1 SGD 2 Adagrad 3 RMSprop 4 Adam
A: 1번 SGD. SGD 는 기본 경사 하강 법과 모멘텀 , 네 스테 로프 모멘텀 알고리즘 을 구현할 클래스 입니다 . 이런 알고리즘 들은 모두 일정한 학습률 을 사용 합니다 .
참고
- [Github] 예제 소스: https://github.com/rickiepark/hg-mldl
- [Google Colab] 예제 소스: https://colab.research.google.com/github/rickiepark/hg-mldl
- Q&A: 박해선 저자님의 github: https://groups.google.com/g/ml-dl-book-qna?pli=
- 유튜브 강의: 👉전체 강의 목록: https://www.youtube.com/playlist?list=PLVsNizTWUw7HpqmdphX9hgyWl15nobgQX
혼공학습단, 혼공, 혼공머신, 혼자 공부하는, 박해선, 혼자 공부하는 머신러닝+딥러닝
'Project Process > Study Report' 카테고리의 다른 글
[영어] 리얼클래스 학습 일기: 일상 회화 표현 정리(8월 4주차) (0) | 2023.08.31 |
---|---|
[영어] 리얼클래스 학습 일기: 일상 회화 표현 정리(8월 3주차) (0) | 2023.08.21 |
[영어] 리얼클래스 학습 일기: 일상 회화 표현 정리(8월 2주차) (0) | 2023.08.15 |
[Study] 혼공학습단 10기: 혼자 공부하는 머신러닝+딥러닝(박해선) - Chapter 06 비지도 학습(5주차) (0) | 2023.08.11 |
[영어] 리얼클래스 학습 일기: 일상 회화 표현 정리(8월 1주차) (0) | 2023.08.07 |