[AI/python] AI 카테고리 테스트
카테고리: AI
어떤 문제에 따라 어떤 딥러닝 층을 쌓을 것인가?
문제 유형에 따라 출력층 구성
- 이진 분류 →
Dense(units=1, activation='sigmoid')
- 다중 클래스 분류 (예: 3종류) →
Dense(units=3, activation='softmax')
- 회귀 문제 →
Dense(units=1, activation='linear')
(또는 생략)\ - input_dim 은 입력 데이터의 특성과 수치에 따라 결정함
-
입력 데이터가 8개의 특성을 가지고 있따면 input_dim = 8
- 대부분의 일반적인 문제는 1~3개의 은닉층이면 충분함
- 너무 많은 층은 오히려 과적합을 유발할 수 있음
-
하지만 CNN, RNN, Transormer 등은 구조적으로 더 깊은 네트워크 사용함
- 뉴런수는 일반적으로 입력보다 많게 시작해서 점차 줄여나가는 구조가 많음
```python
model = Sequential()
첫번째 레이어는 Dense() 층이고 이름을 Dense_1로 정함
output shape 는 각 층에 몇 개의 출력이 발생하는지 나타냄. 8개의 입력이 다음에는 12개, 다음에는 8개 그다음 출력은 1개 이렇게 됨
model.add(Dense(units = 12, input_dim = 8, activation = ‘relu’, name =’Dense_1’)) model.add(Dense(units = 8, activation = ‘relu’, name = “Dense_2”)) model.add(Dense(units = 1, activation = “sigmoid”, name = “Dense_3”)) model.summary()
위 코드보면 출력층이 [12, 8, 1]로 구성되어 있음을 알 수 있음 -> 이거는 자주 쓰는 구조중 하나
근데 만약 다중 분류 문제라고 하면 마지막 출력층은 1이 아니라 분류해야할 대상의 갯수가 될것임
활성화 함수 선택 기준

예시로 이진 분류 예측 모델이 있음
```python
model = Sequential()
model.add(Dense(32, input_dim=8, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
8개의 input_dim 을 받아서 32, 16, 1로 줄여나가며 예측함
그리고 결국 실험과 검증을 통해 튜닝해야함.
그래프 보고 오차 비율이나 이런것도 확인해봐야함
손실함수 - loss
categorical-교차 엔트로피와 바이너리-교챠엔트로피와 평균제곱오차
예측값과 실제값 사이의 차이를 수치화해서 학습이 가능하도록 함 categorical crossentropy는 다중 클래스 분류에서 사용됨
최적화 함수 - optimizer
adam을 주로 사용함. 거의 대부분의 경우에서 기본값으로 사용해도 좋은 성능을 냄 필요에 따라 learning_rate를 직접 설정 가능
모델 평가 지표
metrics = [“accuracy] 분류 문제에서 가장 일반적인 성능지표임
댓글 남기기