AI 모델의 숨겨진 진실

우리는 AI 학습할 때 모델을 학습시켜보고 평가하며 안되면 다시 고쳐서 학습시켜보는 과정을 반복함. 그러나 이게 전부일까?

 

1. 고객 중심 VS. 개발자 중심

 

조금만 생각해봐도 완벽하게 훈련시키고 평가한 모델을 고객에게 줘봤자 ‘고객이 원하는 것’이 아니라면 좋아하지 않는다는 사실을 알 것

 

어느 것이 더 좋다는 이야기를 하고 싶은 것이 아니고 여러 관점이 있다는 것을 이해하는 것이 중요하다

 

고객 중심으로 고객이 원하는 것만 만든다고 잘 만들어지는 것도 아니고 반대로 잘 만들다보면 고객이 원할수도 있는거고

 

etc-image-0

 

 

 

2. 인공신경망의 학습과정은 완벽하게 추상화할 수 없다

 

보통 생각하기에 AI는 인공신경망에 input을 주면 output이 바로 나오는 인상을 주기 쉬운데 사실 그렇지 않다

 

심지어 input을 주면 정확한 output이 항상 나오는 것도 아니다

 

역전파와 SGD만 적용한다고 인공신경망이 마술같이 동작하는 것도 아니고

 

batchnorm을 쓴다고 수렴하는 것도 아니고 RNN을 도입한다고 텍스트를 마술같이 이해하는 것도 아니다.

 

모델이 복잡할수록 어디가 문제인지 지적하기도 어렵고 어떻게 해야 고칠 수 있을 지 제어하기도 쉽지 않다.

 

 

3. underspecification problem

 

1) dataset shift

 

세상을 이해하는 모델을 만들기 위해 real world에서 sampling하여 data를 얻는데 여러 이유로 dataset shift 문제가 발생

 

dataset shift는 보통 train set과 test set에서 data의 분포가 다른 현상을 말한다.

 

모델을 data로 훈련시켜 평가를 해보면 test 과정에서도 train때와 비슷한 결과를 보여준다.

 

그러나 이 모델을 실제 세계에 적용해보면 세상은 항상 변화하기 때문에 모델을 훈련시킬때의 data와는 그 분포가 변하여 성능이 떨어지는 현상이 종종 발생한다.

 

2) 약간씩 다른 모델

 

동일한 데이터를 이용해 model을 훈련시키더라도 정확히 똑같은 model을 여러개 생산하는 것은 불가능하다

 

training 방법을 어떻게 하느냐, random initialization과정에서 조금씩 다른 radom node value에 따라 동일한 task더라도 서로 다른 성능을 가지는 model들이 나온다

 

test data를 넣으면 어떤 건 더 잘 분류하고 어떤 건 분류를 잘 못하는데 이런 현상을 underspecification이라고 부른다.

 

etc-image-1

 

 

 

data shift, 서로 다른 training 방법 등에 의해 동일한 데이터를 동일한 task에 대한 모델을 훈련시키더라도 서로 다른 성능을 가진 모델이 나옴

 

 

4. machine learning model life cycle

 

비즈니스 문제가 무엇인지 정확히 인식하여 목표를 명확히한다.(business problem >> goal definition)

 

데이터를 잘 모아야하는데 어떻게 잘 모을지, 잘 모은다는 것은 무엇인지 불확실한 영역이다(data collection)

 

어떠한 feature를 고를지 어떻게 선택해야할지 고민하는 것도 쉽지 않다(feature engineering)

 

이후 주구장창 하던 model을 train하고 model을 평가하는 evaluation을 수행

 

etc-image-2
machine learning model의 life cycle

 

 

평가까지 완료한 model을 실제 세계에 내놓기 위해 serving작업을 수행하는데 어떻게 해야할지 고민해야하고(model deployment >>> model serving)

 

serving 후에도 발생하는 문제를 감시하고 update하는 과정에서 비용이 많이 들며 어떻게 해야할지 고민해야한다(model monitoring & maintenance)

 

모델을 유지보수하는 과정에서도 데이터를 다시 모아야할수 있고 모델을 다시 훈련해야할 수 있고

 

모델을 훈련시키고 평가하는 과정이 전부가 아니며 고려해야할 부분이 상당히 많다는 것이 중요하다

 

경량화 모델은 일반인들이 많이 사용하므로 이런 serving, update 과정이 더욱 중요하다.

 

etc-image-3

 

 

공부하면서 코드가 전부라고 생각하기 쉽지만 고려해야할 사항들이 굉장히 많다

 

 

5. data의 중요성

 

모델링이라는 것은 데이터에 대한 특징을 파악하는 것이므로 데이터를 모으는 시점에서 유의미한 무언가를 파악할 가능성이 높다.

 

그러나 대부분은 데이터를 모아 모델링을 하여 deploy하고 serving을 시켰더니 문제가 발생하면 다시 모델링부터 하려고 한다.

 

사실은 데이터에 문제가 있을 수 있는데 아까워서 모델링부터 다시하다보니 loop에 빠져버린다는것

 

데이터 수집 과정부터 문제를 잡지 못하면 이후 문제가 배로 터질 수 있다는 것

 

상품의 질을 평가하는 것 못지않게 데이터의 질을 평가하는 것도 굉장히 중요하다는 것이다.

 

etc-image-4

 

 

저품질의 dataset이 문제가 심화되어 이후 결과에 배로 부정적인 영향을 미친다는 data cascade

 

데이터를 수집하는 과정에서 문제 있는지 모르고 쉽게 넘어가다가 사람들에게 serving하면 발생하는 문제는 쉽게 파악가능

 

그러나 실제 문제는 데이터 수집과정에 있는데 그걸 모르고 모델링만 계속 반복하는 문제 발생

 

그래서 데이터 질을 평가하는 과정도 중요하다는 그림

 

 

6. AI기술 도입의 문제

 

사내에 AI 기술을 도입하겠다고 생각해도 사실 쉽지 않음

 

사내 인프라에서도 on-premise server나 cloud나 edge device나 뭘 쓰는게 좋을지 고민해야하고

 

신규 AI 인력을 채용하는 것도 쉽지 않고 도입해도 기존 사내 인력들이 분위기에 따라서 적응을 잘 못한다면 쉽게 튕겨나감 

728x90