data preprocessing 기본 개념 제대로 이해하기
1. data preprocessing의 중요성
1-1) introduction
디스크 안에 단순히 파일로 존재하는 데이터(Vanilla data)는 그대로 모델에 쓰기에는 추가적으로 무언가 할 것이 많음
명확히 정의한 문제들을 바탕으로 ‘다양하고 일반화시킬 수 있는 여러 작업들이 병행된’,
그러면서 ‘문제 해결을 위해 나올 수 있는 여러 가능성이나 주제를 적용시킨’ “모델을 위한 dataset”으로 변환이 필요함
이런 모델을 위한 dataset으로 변환을 하고 나서 model training을 진행함
“일반적으로 쓸 수 있는” 데이터를 하나 하나씩 뱉어낼 수 있는 기능을 구현한다면 모델 학습에 무리가 없을 것
dataset 구축의 기본기를 잘 갖춰나야 앞으로 나올 음성, 시계열, 텍스트 등등 엄청 큰 다양한 데이터라도 문제 없이 대응할 수 있을 것
어떤 형태인지 알 수 없는 폴더안에 들어간 vanilla data에서
이미지 array 형태로 데이터를 각각 바꾸고
’모델이 좋아하는 dataset’으로 바꿈
1-2) preprocessing은 무슨 의미를 가질까
data science에서 가장 큰 비중을 차지하며 영혼까지 바칠 정도로 시간도 가장 많이 소요되는 과정
데이터를 직접 수집했을 때 쓸 수 있는 것이 절반이면 다행이다 싶을 정도로
현실에서는 noise, NULL 같은 것이 포함되어 있고 제대로 수집되지 않은 것이 대부분이다.
현실에서 발생할 수 있는, 예를 들어 정형 데이터 같은 경우 스키마 자체가 정의되어 있지 않거나 데이터의 의미를 모르거나
이상치가 들어가거나 NULL이 들어가거나 도저히 이해할 수 없는 noise가 들어가거나… 이미지는 양반임
competition data나 학교에서 배우는 데이터같은, 깔끔하고 정제된 데이터만을 써온 지망생은 전처리의 중요성을 모르지만
실제 일하는 사람들은 누구나 전처리가 80%이상 중요하다고 생각한다
어쨌든 전처리하여 좋은 데이터를 모델에 넣어주는 것이 분명 모델 성능 개선할 확률이 높다
지금 당장 와닿지 않아도 앞으로 competition만 할 것은 아닌데 전처리의 기본기부터 스킬을 잘 익혀
어떤 데이터가 오더라도 문제를 잘 정의하고 해결하는 능력을 키울 수 있어야함
2. bounding box가 가지는 의미란
모든 target object를 정확히 그것만 이미지로 찍을 수 있으면 좋지만 보통 그렇게 쉽지는 않다
자동차만 객체로 찍고 싶어 사진을 찍어도 사진기를 정말 밀착해야함
모든 경우 그렇게 밀착해서 사진 찍기는 어려운데 만약 사진에서 원하는 object를 정확하게 표시할 수 있다면 이야기가 다르다
그 정확하게 표시한 부분만 crop하여 학습을 진행하고 나머지 부분은 noise라 생각하고 버리겠다
실제로 자동차를 target으로 학습을 진행했으니 자동차만으로 학습하고 나머지는 noise처리하는게 도움이 될 수도?
사진 안에서 원하는 object에 대한 detection으로 대각선의 두 점 좌표 (x1,y1) , (x2,y2)를 구하면
사각형의 bounding box를 만들고 그 형태로 crop하여 학습 진행하면 높은 점수 기대할 수 있을지도??? 이거 해볼만 한데 구현 할 수 있나??
3. resizing이 가지는 의미란
image의 size가 너무 크면 계산량이 엄청나게 커져서 학습이 조금 힘들다
최신 딥러닝 모델들이 커버할 수 있다고 하더라도 작업의 효율화를 위해서는 resizing이 필요하다
image가 channel * width * height 크기의 array로 이루어져 있어서 width=300, height=300만 되어도 90000개
여기에 channel이 RGB로 3개면 270000개로 어마어마해짐
심지어 resize하지 않고 원본으로 학습해도 물론 resize할 때보다 성능이 좋겠지만 큰 향상이 있는 것은 아니다.
계산적 측면에서 효율적으로 빠르게 할 수 있다는 것이 resize의 필요성
4. 예시로 이해하는 전처리의 효과
전처리 방법, 종류, 형식, 효과 등은 domain에 따라 달라서 한마디로 말하기 어렵다
경험상 medical image는 전처리 후 효과가 좋았다
APTOS Blindness detection 대회에서 안구 이미지를 보고 실명을 미리 탐지할 수 있는 알고리즘을 찾고자 했다
대회의 배경은 의료 시스템이 잘 갖춰지지 않은 지역에서는 좋은 장비로 사진 촬영하기 어려워서 어두운 사진으로 찍어야하는데..
전처리가 무조건 정답은 아니다. 문제 정의를 명확히 하여 당위성을 찾아 가설을 세워 실험적으로 증명해야함
5. 전처리에서 주의할 점
전처리가 항상 좋은 결과를 가져다 주는 것은 아니다.
무조건 해도 되는 것은 사실상 없다
도메인에 따라 사용방법, 처리방법부터 효과까지도 다양하다
정의한 문제를 명확히 이해하여 당위성 있는 전처리 가설을 설정하고 성능이 좋다는 것을 실험적으로 증명해야 효과있다.
그만큼 생각보다 시간을 많이 들여야함
당위성 있는 전처리 가설을 설정하려면 그만큼 데이터 관찰을 많이 해야한다.. visualization부터 다양한 도구들을 사용하면서
'딥러닝 > 딥러닝 기초' 카테고리의 다른 글
앙상블(ensemble) 기본 개념 제대로 이해하기 (0) | 2023.05.05 |
---|---|
pretrained model & transfer learning에 대해 제대로 이해하기 (0) | 2023.05.04 |
딥러닝 모델 학습의 기본 개념 복기하기 (0) | 2023.02.24 |
인공지능 개론1 2023년 최신판 (0) | 2023.02.24 |
convolution layer의 parameter 세는 방법 대충 (0) | 2023.01.03 |