1. 6살 아이에게 처음으로 '고양이'를 가르쳐 준다고 상상해보자.
2. 색이 까만 고양이, 귀가 접힌 고양이, 뚱뚱한 고양이 등 다양한 형태/종류의 고양이를 보여주면서 이들 모두 '고양이'라고 알려줘보자.
3. 네 발로 걷고, 인간과 친숙하며 몸이 털로 덮힌 강아지들을 보여주며 이들은 고양이가 아니고 강아지라고 알려주자.
4. 자 이제 새로운 고양이/강아지 사진들을 보여주면서 고양이인지 강아지 인지 구분하도록 해보자.
처음에는 틀릴 수도 있다. 틀리면 틀렸다고 알려주고 다른 사진을 계속 보여주면서 테스트를 해보자.
5. 어느정도 지나면 아이는 고양이와 강아지를 구분해낼 것이다.
6. 여러가지 고양이 사진을 접하면서 눈을 관찰한 고양이의 특징을 뇌에 각인 시킨 것이다.
7. 자 이제 컴퓨터에게 고양이를 가르쳐 보자 (컴퓨터로 고양이를 구분해내는 모델을 만들어 보자)
8. 초기의 컴퓨터 이미지 인식 모델은 물체(object)의 형태(Shape)를 인지하고 구분해내는 방식으로 설계되었다.
즉 "귀가 쫑긋 솟아 있으며 몸이 길쭉하고 꼬리가 있는 형태라면 '고양이'다" 라고 말이다.
9. 하지만 아래에 이미지 속에 있는 고양이는?
고양이 형태를 모델링한 것과 일치하지 않으므로 고양이로 구분해내지 못했을 것이다.
10. 반면, 충분히 학습한 아이는 고양이를 구분 해냈을 것이다. (아이에게 고양이를 학습시킬 때 다양한 모습의 고양이를 보여주었다는 전제) 아이는 단순히 고양이를 형태로만 구분하는 것이 아니기 때문이다.
11. 이러한 인간의 학습 방식에 착안하여 '머신 러닝' 모델이 등장하게 된다.
즉, 일일이 컴퓨터에게 구분 기준을 알고리즘으로 만들어서 알려주는 것이 아니라, 고양이(사진)이 '고양이' 인 이유를 스스로 학습하게 끔 한 것이다.
12. 여기서 학습이라는 것은 마치 인간이 시각 정보를 뇌에 각인 시키는 것 처럼 컴퓨터에도 뉴런으로 이루어진 '뇌' 구조(Neural network)를 만들어서 시각 정보를 이 네트워크에 저장하는 것을 말한다.
13. 또한 고양이를 반복해서 보여줄때마다 이 네트워크에 저장된 정보들이 올바르게 동작하게끔 업데이트를 해준다.
마치 아이에게 반복해서 고양이를 보여주는 것처럼 말이다.
14. 어느정도 숙련이 되면 아이가 고양이를 정확하게 구분해내는 것처럼 컴퓨터의 네트워크 또한 어느 시점부터는 업데이트가 거의 일어나지 않으며, 고양이를 대부분 구분해내는 것을 확인할 수 있다.
15. 아래 그림은 학습이 끝난 네트워크에서, 각 노드(Neuron)들이 고양이의 특징 정보들을 담고 있는 것을 보여주는 것이다.
16. 이 네트워크를 수억개의 결합으로 확장하여 방대한 학습을 시켜주면 아래와 같은 결과를 보여주기도 한다.
마치 아이가 사진에서 고양이를 보고 가리키는 것에서 사진을 보고 상황을 표현해주는 것처럼 말이다.
17. 물론 에러를 내포하고 있다. 이 모델은 칫솔을 학습시키지 않은 모델이다. 이처럼 세상에는 학습시켜야 할 대상들이 훨씬 더 많으며 이것을 감당하기에는 컴퓨터의 성능은 따라오지 못한다.
18. 또한 인간이 가진 '추론'을 학습시키는 것도 남은 과제이다.
19. 학습된 사물을 인식하고 구분해내는 것은 인간보다 빠르게 할 수 있는 수준까지 왔지만 이것이 여전히 인식기술이 10세 수준에 불과하다고 하는 이유이다.
==========================================================================
[영상 인식을 활용한 어플리케이션들]
[컴퓨터가 본 이미지 데이터]
- Digtal data
- 2D data
- Correlation
[ImageNet Challenge]
[Object detection in real-time]
'머신러닝(Machine Learning)' 카테고리의 다른 글
[Machine Learning] Batch normalization tips (0) | 2021.03.25 |
---|---|
[머신러닝] 경사하강법 (Gradient Descent Algorithm) 이해해보기 (0) | 2020.04.12 |
[머신러닝] 선형 회귀 (Linear Regression) (0) | 2020.04.11 |