AI 개발자를 준비하기 위해 필요한 것
안녕하세요. WH입니다.
이번 글은 잠깐 쉬어가는 느낌으로 준비하는 데 도움이 될만한 것들과 이유를 적어보려고 합니다.
시작하겠습니다.
공부하면 좋은 언어
많은 언어가 있겠지만, 우선은 파이썬이 아닐까 싶습니다. 이유는 간단합니다. 1번 파이썬 프레임 워크가 잘되어 있습니다. 대표적으로 tensorflow, pytorch 가 있겠죠. 뭐 물론 caffe2 나 caffee 도 있긴 합니다만, 처음 무엇인가 시작하게 되면 서버 쪽에서 돌릴 일이 많기 때문에, 파이썬이 가장 적합한 것 같습니다. 당연히 edge device에서 하신다면, C까지는 아니더라도 C++ 정도는 알고 계시면 좋을 것같네요., edge device에서는 제약 사항이 많기 때문에 pipe line을 컨트롤 하는데 필요하거든요. 메모리 이슈도 있구요. 한 줄로 정리하면, 파이썬, 그리고 edge를 할거면 c++ 서버를 할거면 자바, 자바 스크립트를 추천드립니다.
파이썬을 하면 꼭 하셨으면 하는 모듈이 있습니다. 그것은 바로 numpy입니다. 이유는 vectorlize 와 broadcasting 때문입니다. 뭐가 중요하냐. 굉장히 중요합니다. 속도 차이 그리고 행렬 연산에 있어 vectorlize는 성능이 압도적이다라고 할 수 있겠습니다. numpy로 어떤걸 해보면 가장 도움이 되냐, 앞서 다뤘던 linear classifier를 numpy로 구현해 보는 것이 큰 도움이 될겁니다. 순전파 역전파 그리고 update 과정을 모두 구현해 봄으로써 실력 향상에 큰 기여가 있을 것이라 판단합니다. 이 과정에서 numpy의 활용은 for문 대신 vectorlize와 broadcasting을 활용하시길 추천드립니다.
공부하기 좋은 자격증
두번 째로는 공부하기 좋은 자격증입니다. 대표적으로는 2가지가 있는 데, 내가 이론적인 내용을 하나도 모른다는 가정하에, adso 그리고 빅데이터분석 기사를 추천드립니다. 순서는 adsp를 먼저 취득하신 후에, 빅데이터 분석 기사를 보는 것을 추천드립니다. 이 자격증을 가지고 있다고 ai를 안다고 할 수 없습니다. 다만, 기본적으로 이야기할 준비가 되어 있다라고 생각하시면 되겠습니다. 그리고 자격증 취득시에, 문제만을 풀기 보다 이론을 완독하시길 추천드립니다. 자격증이 목표가 아니라 ai에 대한 전반적인 이해가 목적이기 때문입니다. 빅데이터 기사의 경우 저도 취득했습니다만, 실기 과목이 있는데, 실기 과목 난이도는 어려운 편이 아닙니다. skitlearn 모듈을 활용할 수 있는 정도면 어렵지 않게 취득하실 수 있을 겁니다.
공부하기 좋은 강의
많은 강의를 들어봤습니다만, computervision 관련 강의는 단연컨데 cs231을 추천드립니다. 제가 쓰고 있는 글에도 많은 내용이 포함되어 있지만, 기초를 잡기에 훌륭한 강의라고 생각됩니다. 강의만 듣는 것이 아닌 과제를 꼭 해보시길 바랍니다. 과제에 대한 솔루션은 인터넷에 많이 돌아다닙니다만, 살펴봤을 때 잘못된 내용도 꾀나 많음으로 본인이 직접 해보시길 바랍니다.
공부하면 좋은 기타
AI는 매우 복합적인 학문입니다. 아직까지도 공부를 하지만, ai를 하는데 반드시 필요한 부분들이 있습니다. 바로 수학입니다. 많은 분야가 있겠지만, 통계와 선형대수 쪽은 공부하시면 큰 도움이 됩니다. ai 논문을 보는데 수학적 이론이 굉장히 많습니다. 대부분이 비슷하지만, vision ai의 경우 선형 대수가 많이 사용됩니다. 이유는 요소를 벡터로 계산하기 때문입니다. 통계는 머신러닝에서 많이 사용됩니다. 정형화된 데이터를 다룰 때 가장 많이 사용되는 기법이므로 통계를 공부하시면 많은 도움이 되실 겁니다.
이외 기타
2 가지로 정리해서 말씀드리겠습니다. 가정은 위의 모든 과정을 했다는 전제입니다. 우선 ai 관련 논문들을 챙겨보시길 바랍니다. 당연히 모두 못봅니다. 저 역시도 vision 분야를 제외하고는 보지 않기 떄문이죠. 왜냐 너무 많아요. 그리고 기억하셔야될 내용은 논문의 내용을 100% 신뢰하진 않길 바랍니다. 논문은 하나의 주장이지 확립된 학설이 아니기 때문입니다. 특히 최근 2년 내의 논문은 더욱더 주의 깊게 바라보셔야 합니다. 대표적인 예로 batchnormalization 논문이 아마도 15년에 나왔던 걸로 기억하는데.. 정확히는 모르겠습니다. 처음 주장은 공변량 변화 문제를 해결했기 때문에 성능이 향상된다라는 결론을 가지고 발표를 했지만 3년 뒤 18년에 공변량 변화를 개선한 것이 아닌 smoothing 효과로 인해 성능이 개선됨이 밝혀졌습니다. 이처럼 지속적으로 변화하는 트렌트는 파악하되 논문을 전적으로 믿으시진 않으셔야합니다.
그 다음으로는 제대로된 프로젝트를 진행하시길 바랍니다. 블로그에 떠도는 많은 ai 예시는 말 그대로 예제 수준 입니다. 무슨 말이냐면, 우리는 수능 문제를 풀어야하는 데 많은 인터넷 자료는 개념원리 기본 문제 정도를 다루고 있다고 할 수 있습니다. 때문에 문제를 정의하고 데이터를 수집하고 전처리하고 학습 후 피드벡해보며, 데이터를 바라보는 직관, 모델을 학습시키는 직관 등 직관을 키우시길 바랍니다.
마무리하며
여기에 써놓은 것들이 너무나도 당연하고 누구나 할 수 있는 말이라고 생각할 수 있습니다만, 제가 ai를 공부하며 느꼈던 점을 이런 것 조차 정리되어 있는 곳이 잘 없기 때문에 부딪혀보고 겪어본 뒤에야 정립할 수 있었던 것들 입니다. 누군가에게 큰 도움이 되길 바라며, 이상 마무리하겠습니다. 전에 정리된 글, 앞으로 올라올 글들 역시 도움이 되길 바라며 이상 마무리하겠습니다. 감사합니다.
2022.04.21 - [AI] - computer vison AI (기초 이론 feat. 이미지 분류 )
2022.04.21 - [AI] - computer vision AI ( feat loss fuction, 손실 함수, 최적화 )
2022.04.21 - [AI] - computer vision AI( feat. linear classifier 선형 분류기 )
2022.04.22 - [AI] - computer vision AI ( feat. 역전파, backpropagation, computational graph )