백문이 불여일타
딥러닝 입문
읽고 정리
* 문제가 되면 언제든 삭제합니다
2장 살펴보기
2.1 머신러닝 프로세스 간략히 살펴보기
머신러닝 프로세스 : 문제 정의 및 데이터 준비하기 - 학습하기 - 추론 및 평가 - ?
?의 단계 : 다시 데이터를 준비하거나 다른 작업을 하거나.
데이터를 다루며 본인만의 프로세스를 구축하는 것은 중요하다
2.1.1 문제 정의 및 데이터 준비하기
명확한 문제 정의가 가장 중요한 시점
- 데이터가 숫자, 문자, 이미지, 오디오, 비디오 무엇인가
- 어떻게 해결할 것인가
문제가 정의되지 않으면 모델을 선택할 수 없다.
문제 해결을 위한 형태로 데이터를 변형하는 데이터 전처리 방법의 선택도 중요하다.
데이터가 파악되었다면 다음으로 모델을 선택해야한다.
2.1.2 학습하기
모델을 선택해야 한다.
- 선택한 모델이 주로 어떤 데이터에 적용되었나 / 사례가 있나
- 모델이 얼마나 깊어야하는가 / 어떤 환경에서 사용되는가
- 옵티마이저 / 손실 함수
- 실험 환경 적합성
보통 SOTA(최고의 성능)를 달성한 모델부터 시작( like 프로토타입 )
모델보다 더 중요한 하이퍼파라미터 조정
배치 크기, 학습률, 드롭아웃률 등 파라미터 요소 변경하며 실험 진행.
실험에 대한 기록도 중요
2.1.3 추론 및 평가
추론은 학습된 모델로부터 정답이 없는 데이터에 대해 정답을 만드는 행위
학습지표가 결정된 후에 하는 고민
추론을 통해 얻은 정답을 평가하는 방법
주어진 상황에 맞게 평가 기준을 세우고 최종 모델을 선택해야 함.
2.2 용어 살펴보기
용어에 대한 개념을 아는 것도 중요하지만 여러 용어를 알고 있는 것도 중요함
2.2.1 용어:데이터 준비하기
클래스 불균형
클래스가 불균형하게 분포되어 있음
주로 특이한 경우 - 은행 거래 사기, 희귀 질병, 기계 불량음 의 데이터에서 볼 수 있음
= 이상 탐지
*과소표집과 과대표집
과소표집
다른 클래스에 비해 상대적으로 많이 나타나있는 클래스의 개수를 줄이는 것
균형을 유지할 수 있게 되지만 제거하며 유용한 정보가 버려지게 되는 단점 있음
과대표집
데이터를 복제함 (무작위 or 기준을 정한 복제)
정보를 잃지 않아 학습용 데이터에서 높은 성능을 보이나 실험용 데이터에서의 성능은 낮아질 수 있음
대부분의 과대표집은 과대적합의 문제를 가지고 있기 때문임
이를 피하기 위한 방법으로 SMOTE가 있음
실제환경에서는 클래스의 종류가 적은 경우가 대부분.
*회귀와 분류
회귀
하나 또는 여러 개의 특징을 통해 연속적인 숫자로 이루어진 정답을 예측
하나, 여러 개의 특징 = 독립변수
정답 = 종속변수
햄버거 가격, 주식 가격, 영화 관객 수, 축구 선수 연봉 예측
분류
데이터셋에서 미리 정의된 클래스 중 하나를 예측하는 것
정답은 연속적이 아닌 하나의 클래스에 속하는 것이어야 함
이진분류, 다중분류, 다중레이블분류
*원핫 인코딩
하나의 클래스만 1이고 나머지 클래스는 전부 0인 인코딩
범주형 데이터로 되어있는 경우에 사용
*교차 검증
모델의 타당성을 검증하는 방법
데이터를 모두 사용하면 좋은 성능을 보여주지만 새로운 데이터에 대해서는 좋은 성능을 보이지 못함.
대부분의 경우에서 모델이 과대적합되었기 때문.
교차검증은 이를 방지하고자 하는 방법.
학습 / 검증 / 테스트 데이터로 나뉘고
테스트데이터는 최종 평가 이전에는 절대로 사용하면 안 된다.
2.2.2 용어 : 학습하기
하이퍼파라미터
경험에 의해 결정되는 요소를 의미
학습률, 배치 크기, 에폭, 드롭아웃률 등
최적의 값을 찾기 위해 다양한 값을 시도하면서 반복적인 실험과 시간을 투자해야 함. = 하이퍼파라미터 튜닝
대표적 방법 : 그리드 서치, 랜덤 서치, 케라스의 케라스 튜너 이용해서 해도 됨.
배치와 배치 크기
모델 학습시 주로 데이터 한 개만 사용 or 전체 데이터 사용.
데이터 한 개 사용 => 정답을 찾기까지 헤맬 수 있음
전체 데이터 사용 => 모델이 봐야 할 데이터가 많아 속도가 매우 느림 / 하드웨어가 받쳐주지 않으면 시도도 못함.
해결하기 위해 사용하는 배치 학습.
메모리와 속도의 측면에서 많은 이득을 가져다 줌.
에폭과 스텝
에폭 : 전체 데이터를 사용하여 학습하는 횟수
=> 전체 데이터를 10회 반복하여 모델을 학습시킨 것 = 10 에폭
스텝 : 모델이 가진 파라미터를 1회 업데이트 함
전체 데이터가 1000개
배치 크기 10
여기서 10에폭은 데이터를 1000개 * 10번 사용한 것.
= 반복을 10번 한 것이니까
10에폭을 했다면, 1000스텝. = 전체 데이터 사용 수 / 배치 크기
ex)
전체데이터 | 100개 |
1에폭 | 100개 |
1step | 5 |
요구 데이터 | 1000개 |
epochs | 10 |
steps | 1에폭에 5스텝이니까 10에폭하려면 50steps |
배치크기 | 20 |
배치 | 5 (=100/20) |
+ 여기는 이해가 안가서 확인 했던 블로그
[DL기초] batch_size, epoch, step 개념 그리고 iteration
일반적으로 Gradient Descent는 아래 3가지 개념을 베이스로 학습이 진행된다. batch_size: Gradient Descent를 한번 계산하기 위한 학습 데이터의 개수 steps: Gradient Descent를 batch_size별로 계산하되, 전체 학습
bslife.tistory.com
지도 학습
학습 데이터에 정답이 포함된 것
회귀, 분류가 속함.
비지도 학습
학습 데이터에 정답이 포함되지 않은 것.
모델에게 A를 종류별로 주고 같은 종류끼리 묶어보라고 함.(클러스터링)
딥러닝에서 대표적으로 B 사진을 주고 다시 모델에게 B를 그려보라고 함. (생성 모델)
* 강화 학습 : 에이전트가 주어진 환경에 대해 어떠한 행동을 결정하고 이를 통해 얻는 보상으로 학습하는 것.
과대적합과 과소적합
과대적합 Overfitting
모델이 학습 데이터에서는 좋은 성능을 보이지만 새로운 데이터에 대해서는 좋은 성능을 보이지 못하는 결과.
단순히 외운 결과라고 볼 수 있음.
정규화 Regularization사용, 이상치Outlier 제거 등으로 해결
과소적합 Underfitting
모델이 학습 데이터를 충분히 학습하지 않아 모든 측면에서 성능이 나쁨.
이때의 모델은 성능이 개선될 여지가 남아있음
더 복잡한 모델 사용, 모델 충분히 학습 등으로 해결
두 문제를 동시에 해결할 수 있는 방법은 양질의 데이터를 수집하는 것.
핵심은 모델보다 데이터에 존재
2.2.3 용어 : 평가하기
혼동행렬 Contusion Matrix
주로 알고리즘이나 모델의 성능을 평가할 때 사용
정확도 Accuracy
자주 사용되고 가장 기본이 되는 지표
정밀도와 재현율
정밀도 Precision
모델이 True라고 예측한 정답 중에서 실제로 True인 비율
재현율Recail
실제 데이터가 True인 것 중에서 모델이 True라고 예측한 비율. 민감도Sensitivity라고도 함
F1-스코어
정밀도와 재현율의 임계치를 잘못 설정하면극단적인 경우로 향할 수 있음.
이를 방지하기 위함.
재현율과 정밀도의 중요성이 같다고 가정하고, 두 지표의 조화평균으로 만들어진 지표
재고 관리, 고객응대처럼 한쪽으로 치우치지 않는 모델을 만드는 데 유용
ROC 곡선
혼동행렬에서 나타날 수 있는 지표
특이도Specificity는 모델이 False라고 예착한 정답 중 실제 False인 비율
진짜 양성 비율 TPR,True Positive Rate은 민감도와 같음.
가짜 양성 비율 FPR, False Positive Rate은 실제로 False지만 True로 잘못 예측한 비율
ROC 곡선은 두 지표의 변화를 보기 위해 그래프로 나타낸 것
학습한 모델을 실제 환경에 적용하기 위해 올바른 지표를 통한 평가는 필수가 됨.
데이터의 특징과 상황에 따라 평가 기준이 다름.
2.3 데이터셋 살펴보기
특정 데이터셋에 대해 탐색하는 방법
1.구글 데이터셋 검색
2.캐글
2.4 커뮤니티 살펴보기
물어보는 것이 중요함
'MachineLearning > DeepLearning' 카테고리의 다른 글
torch-TensorRT 를 사용하며. torchscript 란? (0) | 2023.06.29 |
---|---|
딥러닝 구조, 학습 과정, 용어 (1) | 2023.03.25 |