-
ML Development ProcessMachine Learning/Stanford ML Specialization 2024. 4. 28. 12:29
머신러닝을 개발하는 프로세스는 어떻게 진행될까?
먼저 어떤 모델과 데이터등을 사용할지 architecture를 결정하고 모델을 학습시킨다. 이후, bias, variance, error들을 이용해 모델을 진단하고, 만약 결과가 맘에 들지 않는다면 model이나 data를 변경해주고, 이 과정을 반복해준다.
Error Analysis
위 단계로 스팸 이메일을 찾아내는 Classification 모델을 트레이닝 했는데, 500개의 예시중 Cross Validation에서 100개를 잘못 분류했다고 가정해보자. Error Analysis는 매뉴얼하게 각 에러를 살펴보는 일이다. Cross Validation에서 알고리즘이 잘못 분류한 예제를 직접 찾아서 공통 주제나 속성 등으로 그룹화를 하는것이다. 예를 들어, 100개의 이메일 중, 21개가 약/약국에 관련된 이메일이라면, Parmaceutical Spam으로 분류를 하도록 한다. 또는 의도적인 맞춤법 오류(w4tches, med1cine)등을 따로 그룹하고, unusual한 email routing, 또는 phising, 그리고 embedding된 이지니 안에 있는 이미지를 이용한 이메일 등을 살펴보는것이다. 이중 Parmaceutical 이나 비밀번호가 피싱을 당한 예시가 거의 40개였다면, 이 케이스를 우선순위로 둘 수 있다. 철자 오류는 3차례밖에 없었다고 한다면, 철자오류를 잡아내는 알고리즘에 먼저 많은 시간을 쓰는것보다는, 다른 케이스를 잡아내는것이 더 효율적일 것이다. 이것을 해결하기 위해 Parmaceutical 또는 Phising 이메일 예시 데이터 사이즈를 더 늘리는 방법으로 모델 성능을 높이는것도 방법이다.
Adding Data
모델을 트레이닝 할 때, 모든 데이터가 충분하게 많다면 너무나도 좋겠지만, 그것은 쉽지 않다. 그래서 위에서 언급한대로, 분류 문제 중, 모델이 습득하고 있지 못하는 문제 중, 가장 우선순위로 해주어야할 것들을 정해서, 해당하는 데이터를 먼저 더해주는것이 방법이다. 위 예시에서는 Parmaceutical 또는 Phising 이메일 사이즈를 더 늘리는 방식이 좋을것이다. 데이터를 더 검색해서 Pharma 또는 Phising 관련 스팸메일을 찾아 추가해주면, 알고리즘의 성능을 많이 높일 수 있다.
이미지 또는 오디오 처리 모델에서는, 기존의 이미지를 이용해서 새로운 트레이닝 데이터를 만드는 방법도 있다.
https://ubiai.tools/what-are-the-difficulties-associated-with-data-augmentation/ 이미 사용했던 이미지를 각도를 조정하거나, zoom을 하기도 하고 조금 왜곡 시키거나 특정 부분만 잘라서 training의 example로 재사용 할 수 있다. 이렇게 되면 학습 알고리즘이 해당 이미지에 대해 더 풍부하게 학습할 수 있다.
오디오도 마찬가지다. 원본 오디오에 군중이나 자동차, 또는 전화 연결음이 좋지 않은 효과를 추가해서 새로운 training example로 사용할 수 있게 된다.
요즘, PDF나 이미지에서 OCR기술을 이용해 텍스트를 읽는 기술들이 많이 쓰여지고 있다. 이런 모델 트레이닝을 위해서, 만약 충분한 이미지나 학습 데이터가 없다면, 컴퓨터에 내장된 다양한 글꼴을 이용하고 바탕이나 폰트의 색을 바꿔서 수많은 케이스를 생성 후 OCR 모델의 training example로 사용할수도 있다. 이런것을 바로 Synthetic(합성) 데이터라고 한다.
Transfer Learning
Neural Network를 트레이닝 할 때, 보통은 output layers의 parameters로 트레이닝을 하지만, all parameters를 갖고 트레이닝 하는 방법도 있다. 이렇게 되면 Knowledge가 transfer되는데 이것을 전이학습이라고 한다. 많은 신경망은 이미 이미지로 트레이닝된 결과물이 있을것이다. 처음부터 모델을 학습시키는것이 아닌, 이미 검증된 결과를 시작으로, fine tuning을 함으로써, 이미 Supervised Learning을 수행한 신경망을 약간의 미세 조정만 해서 작업에 적합한 신경망을 빠르게 얻을 수 있게 된다. 이 과정은 다음과 같이 진행된다.
https://www.mdpi.com/1424-8220/23/2/570 - Transfer Learning(전이학습)을 위해서, 우리가 트레이닝 하고자 하는 아주 큰 대량의 데이터로 학습된 Neural Network Parameters를 다운로드 받는다. 또는 이미 자신이 학습했던 모델의 parameters를 사용할수도 있다.
- 이후, 자체 데이터를 기반으로 Neural Network를 추가로 훈련하거나 미세 조정하면 된다. 이는 이미 훈련된 데이터 사이즈(예를 들어 1만개 이상의 이미지)보다 작아도 괜찮다. 1000개, 심지어 50개의 이미지로도 미세 조정이 가능할 수 있다.
'Machine Learning > Stanford ML Specialization' 카테고리의 다른 글
Bias and Variance (0) 2024.04.27 Model Selection and Evaluation (1) 2024.04.27 Multiclass Classification | Neural Network Additional Layer Types (0) 2024.04.02 Multiclass Classification | Neural Network Advanced Optimization (0) 2024.04.02 Multiclass Classification | Advanced Learning Algorithm (0) 2024.03.24