이번 주차에서는 "머신러닝, 딥러닝"에 대한 학습이 이뤄졌습니다. 머신러닝 관련에서는 각종 학습 모델들을 학습할 수 있었고, 이후 딥러닝 모델의 구조, 정의 방식 등과 신경망 학습을 이루고 있는 구조 요소들과 다양한 내용들에 대해 알 수 있었습니다.
Liked
머신러닝의 다양한 학습 모델들을 배울 수 있는 시간이었습니다. 사실 이전에 머신러닝의 개념을 학습할 때마다 실습 예제에서 보았던 모델들이었습니다. 그래서 이해하는데 더 쉬운 느낌이 있었고, 더해서 학습 모델들의 각 파라미터들의 의미와 어떤 방식으로 모델링이 되고 각각의 차이에 대해 알 수 있어 좋았습니다. 또한 설명에서 참고되었던 그림과 실생활 예시 등이 좋았습니다.
또한 로지스틱 회귀에 대한 설명 이전에 경사하강법, 최적화 이론을 먼저 알게 되어서 이후 로지스틱 회귀를 이해하는데 더 좋았습니다. 그리고 Log loss
부분에 대해 이해가 잘 안된 부분을 질문해서 답을 얻을 수 있었습니다. 또한 로지스틱 회귀 규제에서 사용되는 "L1, L2 규제" 의 하이퍼 파라미터 값이 alpha
가 아닌 C
인 점과 C와 규제 사이가 반비례 라는 점에서 1/C
로 사용된다는 점을 알 수 있어 좋았습니다.
추가로, np.log()
에서 log의 밑이 10 인줄 알았으나 "e" 임을 알게 되어 계산 결과의 의문을 해결할 수 있어서 만족했습니다.
딥러닝 과정 중에서는 MNIST
데이터 셋을 활용해 0~9 까지 손 글씨 이미지를 분류하는 모델을 작성했고, 그림판을 활용해 직접 숫자를 넣고 opencv
패키지를 통해 해당 이미지를 읽어서 직접 분류 모델에 넣는 과정을 할 수 있어서 좋았습니다. 이전까지 숫자로 이루어진 데이터들만 다루다가 직접 그림을 그려서 모델로 분류할 수 있는 과정을 진행한 것이 기억에 남았고 좋은 경험이었습니다.
Lacked
수업을 들으면서 코딩을 하는데 문제 없이 할 수 있었지만, 예시 문제가 다가왔을 때, 어떤 것부터 시작 해야하는 지 헷갈려해 아직 이해가 부족하다고 느꼈습니다. 또한 데이터 전처리 단계에서 원핫 인코딩을 해야할 지, 레이블 인코딩을 해야할 지 이런 부분에 대해 고민하는 것이 아직까지 각각의 개념들의 이해가 부족하다고 느꼈고, 꾸준한 복습과정이 필요하다고 느꼈습니다.
또한 새로 나오는 내용들이 점차 어려워지고, 많은 양을 한꺼번에 학습하다보니 헷갈리는 내용들이 많았습니다. 짧은 시간안에 많은 양의 내용을 빠르게 학습하는 것이 어쩔 수 없는 부트캠프의 한계인 것 같아서 아쉬웠습니다.
벡터 내적 과 행렬 곱 , 기본 수학적 지식이 부족해서 검색해서 따로 학습하였습니다. 머신 러닝 학습을 하면서 수학적 지식의 부족함을 느껴서 아쉬웠습니다.
Learned
1. SVM (Support Vector Machine)
2. K-최근접 이웃 (K-Nearest Neighbors, KNN)
3. 의사결정나무(Decision Tree ) - RandomForest
각 학습 모델에서 사용되는 파라미터들과 그 차이에 대해 알 수 있었습니다.
Ensemble(앙상블) 의 종류와 각각에 해당하는 방식, 모델링 하는 것을 학습하였습니다.
1. 투표 방식
: `Baggin(RandomForest)` 과 `Voting(hard voting, soft voting)`
2. 부스팅 방식
: `GradientBoosting` 과 `XGBoost`
과적합을 방지하기 위한 규제 :
1.Lasso regression (L1 규제)
2.Ridge regression (L2 규제)
과적합을 방지하기 위한 규제 :
1.Lasso regression (L1 규제)
2.Ridge regression (L2 규제)
✅ 선형 회귀와 달리 alpha 값이 아닌C
값을 사용, 또한 C와 규제가 반비례 관계이므로
L1, L2 규제의 식에서1/C
을 사용.
최적화 : 경사하강법
딥러닝 모델 정의 방법에 대해 배웠습니다.
Sequential
방식: 순서대로 쌓아올린 네트워크로 이뤄진 모델을 생성하는 방식Functional API
방식: 다양한 구조의 네트워크로 이뤄진 모델을 생성하는 방식Subclass
방식: 네트워크를 정의하는 클래스를 구현.
이 중 Sequential
방식으로 모델을 정의하였습니다.
정의 1: 모델객체를 생성하고 add() 메소드를 이용해 순서대로 Layer 를 하나씩 추가.
정의 2: 객체 생성시 Layer들을 순서대로 리스트로 묶어 전달.
신경망 구조에 대한 학습
- Input data
- Input Layer
- Hidden Layer
- Output Layer
- Output data -> Loss Function
- Optimizer
- Update 'weight'
신경망 구조를 이루고 있는 각 요소들과 사용되는 함수들에 대한 학습
- 유닛/노드/뉴런 (Unit, Node, Neuron)
- Layer (층)
Input Layer(입력층) Output Layer(출력층) Hidden Layer(은닉층) Fully Connected Layer (Dense layer) Convolution Layer Recurrent Layer Embedding Layer
- 손실 함수
binary_crossentrophy categorical_crossentropy sparse_categorical_crossentropy mse
- 평가 지표
- 최적화
Gradient Decent (경사하강법) 오차 역전파 (Back propagation)
Longed for
잘봤습니다.