안녕하세요. 본격적으로 AI강의를 시작하겠습니다. 

강의보고오기: https://youtu.be/x8GF4SH0LSg?si=lXPLWIJkFu-IPkZD

 

AI와 머신러닝의 관계

AI는 Machine Learning을 포함하는 용어입니다. Machine Learning에는 Deep Learning, Reinforce Learning이 포함됩니다. 

AI/ML의 관계(머신러닝 딥러닝 차이)



위 그림은 AI, ML, DL, RL의 관계를 표현한 그림입니다.

AI (Artificial Intelligence)

강의에서 제가 15년 전쯤에 샀던 로봇청소기 예를 들었습니다. 그 로봇청소기는 머신러닝 기능이 없었습니다. 장애물에 부딪치면 랜덤으로 방향을 바꿨습니다. 정해진 예약만큼 지속적으로 움직이고, 어떤 장애물을 만나서 진행이 어려우면 방향을 바꾸는 정도의 기능이 있었습니다.   

 

이 로봇청소기도 AI기능이 있는 겁니다. 어찌 됐든 스스로 움직이면서 방을 청소하니까요. 아주 단순한 로직이 KDB(Knowlege DB)에 들어 가 있었을 겁니다. 

 

ML (Machine Learning): Shallow Learning 

좀 더 발전한 로봇청소기는 머신러닝 기능을 포함했을 겁니다. 이 로봇청소기는 장애물을 만났을 때 높이를 판단합니다. 그리고 자기가 극복할 수 있는 장애물인지 판단할 겁니다. 높이가 낮은 문턱은 장애물로 판단하지 않고 그냥 넘어버리는 거죠. 높이라는 특성을 파악해 장애물과 비장애물로 분류합니다. 

 

높이라는 X input에 대해 장애물인지 아닌지 판단하는 분류(Y output)를 하는 겁니다. 여러 장애물에 대해 학습이 되어있으면 새로운 장애물을 만났을 때 높이 특성을 파악해 자동으로 분류가 가능합니다. 이 정도 판단하는 작업은 선형적으로 가능합니다. 이걸 Shallow Learning이라고 합니다. 얕은 학습입니다.

 

앞으로 우리가 계속해서 학습할 부분이 이 Shallow Learning입니다. 그러니까 머신러닝 중에서 Deep Learning 전 Shallow Learning을 진행합니다.  그리고 우리가 공부하게 될 Shallow Learning의 원리는 선형대수 밎 확률과 깊은 관계가 있습니다.  그래서 수학지식이 있어야 합니다. 앞서 말씀드렸지만 코드부터 보면서 공부해도 되지만 원리 이해 또는 하고 싶으신 일을 하실 때 한계가 있을 수 있습니다. 상황에 따라 다를 수 있죠. "난 특정 서비스만 개발해서 쓰면 돼"라는 입장이신 분이라면 수학적 원리를 공부할 필요는 없습니다. 

 

ML (Machine Learning): Deep Learning

Deep Learning 기능이 탑재된 로봇청소기는 어떻게 움질 일 수 있을까요? 

 

로봇청소기에 카메라를 탑재할 수 있습니다. 이제 로봇청소기는 "눈"을 가진 겁니다. 그리고 물체를 보고 이 물체가 뭔지도 판단할 수 있습니다. 

 

예를 들어 집에서 고양이를 키운다면 로봇청소기는 고양이를 보고 고양이인지 알 수 있습니다. 고양이 이미지의 RGB특성 등을 파악해 알 수 있는 겁니다. 이 작업은 단순히 높이만 고려하는 특성보다 훨씬 복잡합니다. 그리고 이 특성은 선형적으로 파악이 안 됩니다. 이때 사용하는 기술이 CNN이고, CNN이 Deep Learning의 기술입니다.

 

Deep Learning은 머신러닝의 한분야입니다. 선형적으로 해결할 수 없는 문제를 해결할 수 있습니다. 인공신경망을 활용하여 차원이 높은 문제를 Shallow Learning보다 잘 해결합니다.

 

마지막으로 강화학습이 있습니다. Optimal 한 Policy를 찾는 머신러닝의 분야입니다. 제가 강화학습까지 지속해서 강의를 만들 수 있을지 모르겠습니다. ^^

 

자세한 내용은 강의를 참고하세요.

 

 

참고자료 

1강 강의 내용은 아래 Youtube를 참고했습니다. 시간 되시는 분들은 보시면 많은 도움이 되실 겁니다.

https://www.youtube.com/watch?v=4RixMPF4xis&t=1s 
https://www.youtube.com/watch?v=bOUfOOCFCrE

 

 


남기는 말

저는 이 강의를 기술사를 준비하시는 분들을 위해서 만들어서 코드 설명이 많지 않습니다. 제가 AI를 잘 모를 때 AI관련 책들을 많이 구매했는데, 대부분 책들이 코드를 중심으로 결과를 설명하는 책들이었습니다.

 

저의 경우는 책과 코드를 보고도 원리이해가 힘들어서 큰 도움이 안 됐습니다. 물론 모든 코드에 대해 원리를 이해하고 직접 내부까지 구현해야만 하는 건 아닙니다. 하지만 저는 코드를 보고 어떻게 만들어졌겠구나 하는 정도는 돼야 마음이 편해집니다.  

 

가장 간단한 예로 어떤 언어에서 String과 관련된 함수들을 사용할 때 제가 모든 것을 구현하지는 않았지만 어떤 방식으로 구현됐겠구나 라는 감이 있어야 사용할 때 맘이 편합니다.  

 

물론 사람마다 다릅니다. 사실 이론이 먼저냐 코드가 먼저냐는 SW개발 공부할 때도 나오는 논란입니다. 저는 정답이 없다고 생각합니다. 이론과 코드는 연결되어 있으니까요.

 

제가 학창 시절 시작해서 아직까지 보는 열혈강호라는 무협만화가 있습니다. 대부분 무협소설이나 만화에서 내공과 외공이라는 개념이 있는데, 이론이 내공의 성격과 유사하고 코드로 구현해 보는 보는 것이 외공의 성격과 유사한 것 같습니다. 만화에서 보면 어느 것을 먼저 하든 고수들은 자기도 모르게 내공과 외공 모두 높은 수준에 다다릅니다. 

 

우리가 공부할 AI도 마찬가지입니다. 코드의 고수는 이론도 분명히 고수일 것이며, 이론의 고수는 코드도 고수일 겁니다. 물론 양쪽으로  균형 있는 공부를 해야겠지요, 이론 강의를 공부하면서 작은 프로젝트를 진행하시거나, 코드를 공부하면서 그 원리를 공부하시거나 양쪽 다 좋습니다. 

 

다만, 제 강의는 공부하시분들이 이론적 배경을 잘 아실 수 있도록 도와드리는데 중점을 뒀다는 것을 미리 알려드립니다. 코드 공부는 별도 프로젝트를 진행하시거나 각 단원의 내용에 대해 ChatGPT를 활용하여 코드를 생성하시고 분석하시면서 공부하시는 것을 추천드립니다. 

 

물론 프로젝트에 필요한 코드를 만들거나 당장 필요한 업무에 적용시키기 위한 분은 이론을 다 알 필요가 없으실 겁니다. 어떤 분이 저에게 이론 공부가 중요하다고 묻는다면, 그분에게 회사에서 연구직이거나 학자가 아니면 크게 중요하지는 않다고 말씀드릴 겁니다. 특히 당장 서비스 제작이 급하신 분들은 더욱 그렇죠. 필요하신 만큼 공부하시면 됩니다. 

 

단, 시간이 되신다면 모든 분들이 원리를 깊이 공부했으면 좋겠습니다. 서비스를 만드시는 분들도 현재의 서비스에는 필요 없을 수 있어도 새로운 도전이 생길 수 있습니다. 그 새로운 도전이 다가왔을 때 원리에 대한 깊은 이해가 새로운 insight를 제공할 수도 있으니까요. 

 

모든 사람에게 기회가 올 수도 안 올 수도 있습니다. 하지만, 준비된 사람만이 기회가 왔을 때 잡을 수 있습니다. 준비되지 않았다면 기회가 왔는지도 모르는 거죠. 지금 생각해 보면 저도 많은 기회가 있었는데 그때마다 준비가 안 돼서 기회인지도 모르고 살아 온 것 같습니다. 

 

부디 모든 분들이 어떤 분야던 잘 준비하셔서 저같이 기회인지 모르고 흘려보내는 삶을 살지 않도록 기원하겠습니다. 

 

감사합니다. 

 

+ Recent posts