AI

computervision AI ( feat. 데이터 전처리가 가지는 의미)

개발자_WH 2022. 4. 27. 10:05
728x90
반응형

안녕하세요! WH입니다.

오늘은 학습 과정 중에 일어나는 기본적인 이론들에 대해 다뤄볼까해요

물론 오늘도 역시! why? 에 초점을 맞추겠습니다.

이 글은 AI 학습 과정에 대한 기본적인 지식이 있음을 가정합니다.

 

그럼 시작하기 전에 다 아시겠지만,

그래도 한번은 짚고 넘어갈게요.

 

학습 과정

데이터 전처리 -> network 순전파 및 역전파를 통한 학습 -> 모델 성능 평가

 

  정말 간략하게 표현해보면 이런 정도겠지요? 오늘은 그중에서도 데이터 전처리에 들어가는 기본 이론과 train 과정에 들어가는 기본 이론에 대해 짚어보고자 합니다. 이 글을 읽기 전에 읽으면 좋은 글을 남겨놓습니다.

2022.04.22 - [AI] - computer vision AI ( feat. 역전파, backpropagation, computational graph )

2022.04.21 - [AI] - computer vision AI( feat. linear classifier 선형 분류기 )

 

computer vision AI( feat. linear classifier 선형 분류기 )

안녕하세요. WH입니다. 시간이 난다는 건 참 좋은 것 같아요. 이번 글에서 다룰 내용은 linear classifier 입니다. 저번 글에서 꼭 기억하셔야 할 점은 어떤 이미지를 분류하기 위해서는 기준을 세우고

developer-wh.tistory.com

 

computer vision AI ( feat. 역전파, backpropagation, computational graph )

오늘도 좋은 하루 보내시고 계실까요? WH입니다. 오늘은 조금은 머리가 아플 수도 있는 내용을 다뤄보려고 합니다. 마지막 글에서 다룬 내용은 손실함수와 최적화 그리고 전체적 flow였습니다. ( l

developer-wh.tistory.com

 

데이터 전처리

  데이터 전처리는 많은 과정이 있겠지만, vision 분야에서의 전처리는 이미지에 대한 전처리를 의미합니다. 가장 먼저 우리가 학습 시킬 network에 따라 image를 resize해주는 것, zero centering 등이 있겠지요? 서버에서 돌리는 AI의 경우 image resize는 필요가 없을 수도 있어요. computing 능력이 워낙 좋아서 성능에 차이가 안나거든요. 그런데 edge device에서 활용하는 것이라면 resize 해주는 것은 어플리케이션에서 FPS 성능을 향상시키는 데에 큰 도움이 된답니다. 물론 그만큼 학습 이미지에 왜곡이 들어가기 때문에 성능에는 악영향을 미칠 수 있겠지요. 그러나 이런 trade-off 관계는 항상 존재하기 때문에, 어느 것을 택할 것인가는 모델을 만드시는 분의 선택에 따라 달라지겠지요.

  다시 돌아가서 그렇다면 우리가 왜 이런 전처리를 하는지에 대해서 말씀드릴게요. data preprocess에는 크게 3 가지가 있습니다. zero centering과 normalization 그리고 whitening 이렇게 3 가지인데요.

 

zero centering

  zero centering은 이미지 값의 평균을 이미지에 빼주어 값이 평균을 기준으로 -, + 가 존재하도록합니다. 왜 그렇게 해주는 것일까요? 이는 학습과 관련이 있는데요, input이 양수 혹은 음수 만을 가지게 되면, backpropagation에서 같은 방향으로만 업데이트하게 되어 지그재그로 학습하기 때문에 학습이 비효율적일 뿐더러, 성능에도 좋지 않은 영향을 미칩니다. 그렇기 때문에 zero centering을 해주는 것이죠. 

 

normalization

  그렇다면 normalization은 뭘까요? 값들을 비슷한 범위에 들어오게 해주는 전처리입니다. 왜 이런 전처리를 해주는 것이냐? 그것은 scale에 따른 영향력을 줄이기 위함입니다. scale에 따라 뭐가 달라지냐, backpropagtaion은 gradient를 활용합니다. 그런데 어떤 값은 1-1000까지 변하고 어떤 값은 0.1- 1에 따라 변한다면, 움직이는 범위에 따라 변화율의 차이가 극심할 겁니다. 즉 한쪽은 매우 급격한 변화를 보이고 한쪽은 매우 느린 변화를 보이게 되어, 최적의 학습이 힘들게 되는데, 이런 영향을 줄이기 위해 처리해 주는 것이 normalizaion 입니다. 그런데 이미지의 경우 숫자는 0-255까지의 범위로 scale이 어느 정도 맞춰져 있기 때문에 이런 전처리는 생략하기도 합니다. 마지막으로 whitening 인데요. 이미지 전처리에서는 거의 사용되지 않습니다만, 알아볼까요?

 

whitening

  whitening은 normalization 이후에 상관 관계를 없애주는 전처리 입니다. 이런 것을 왜하느냐? 이유는 여러 input 데이터가 서로 상관 관계가 존재하게 되면, 학습에 좋지 않은 영향을 미칠 수 있기 때문입니다. 쉽게 말하면 각각의 input이 독립적이어야, 해당 데이터만으로 결과를 예측할 수 있는 데 상관 관계가 있는 데이터가 들어가게 되면, 내가 넣어준 input에 따라 다른 값이 영향을 받고 이에따라 결과를 예측하기가 힘들어지게 되는 겁니다. 그런데, image에서는 왜 이런 전처리를 해주지 않느냐? 전처리를 해준다는 것은 사람이 보는 이미지에 훼손을 의미합니다. 즉 이미지를 분류하기 위해 feature map을 구성하게 되는데 그 feature 들을 구성하기도 전에 없애버리는 효과가 있기 때문에 해주지 않습니다.

 

한 글에서 많은 내용을 다루지 않는 이유는 단순합니다.

글이 길어지면 읽기가 싫어지는 것, 그리고 이것만큼은 얻어갔으면 하는 내용만 담기 때문입니다

다음 글에서 뵐께요. 다음 글은 BN 즉 batchnormalizaion에 대해 알아보겠습니다.

반응형

 

 

728x90
반응형