본문 바로가기

지식 저장소

머신러닝에 대한 5가지 오해 (원제 : 5 Reasons You Don’t Need to Learn Machine Learning) - towards 해석

Don't learn machine learning 해석에 이어서 두번째 포스팅 입니다. 해당 게시글은 이전에 머신러닝 개발자가 되기 위한 공부 접근방법 같은 느낌의 글이었다면, 이번 글은 머신러닝 엔지니어에 대한 오해와 머신러닝을 공부해야 할 것 같은 불안감을 가진 사람을 위한 글이라고 볼 수 있을 것 같습니다.

순서에 크게 관계는 없지만 이전 글을 읽어 보실 분을 위해 링크를 달아 두고 시작하도록 하겠습니다.

2021/03/04 - [지식 저장소] - 머신러닝 공부하지 마세요! towards 게시글 해석

 

머신러닝 공부하지 마세요! towards 게시글 해석

안녕하세요. 정말 오랜만에 글을 올립니다. 요즘 바빠서 글을 올리지 못했지만, 재미난 글을 towards에서 읽고 공유하고자 하는 마음에 글을 올리게 되었습니다. 두가지의 글을 해석하고, 개인적

keyog.tistory.com

5 Reasons You Don’t Need to Learn Machine Learning

이 글의 시작은 많은 SNS와 인플루언서들 사이에서 머신러닝을 시작해야하고, 얼마나 쉬운지 말한다고 합니다.

작성자는 비관적인 시야를 가졌다고 하네요.(공격을 최소화하기 위한 작은 방패인 느낌이네요 ㅋㅋ) 머신 러닝 전문가들이 게시한 글을 보면서 왜 많은 사람들이 처음부터 머신러닝을 배우려고 하는걸까 생각했다고 합니다.

그 주된 이유가 "실제로 머신러닝 엔지니어가 뭘하는지도 모르고 있어서 "이고, 현업의 머신러닝 엔지니어 대부분이 인공지능이나 자율주행을 연구하지 않는다고 말합니다.

그럼 본격적으로 해석해서 읽어보도록 하겠습니다.

Why do so many wish to learn Machine Learning?

나는 대학에서 공부할때, ios개발자가 되고 싶었지만 결국, 머신러닝 엔지니어가 되기로 결정햇습니다. 그것은 도전적이고, 어렵고, 무엇보다 재밌어 보엿습니다.

만약 누군가가 ML 개발자의 하루를 보여줬었다면, 나는 ios 게임 개발자로 진로를 정했을 것입니다. 물론, 제 직업에 매우 만족합니다. 그러나 직업을 선택하는 것을 흑과 백처럼 완전히 나누지는 않았을 것입니다.

왜 그런가 하면, Front-end, Back-end, IOS 모두 다 도전적이고, 어렵고, 재밌을 수 있기 때문입니다. 대학에 다닐 때에는 아래와 같이 생각했습니다.

머신러닝은 어려워 보이니까 취업하기가 더 쉬울것이다!
머신러닝은 더 높은 연봉을 받을 것이다!
머신러닝은 미래 지향적이고 재밌을 것이다!
웹 개발은 곧 자동화가 될 것이다.

이러한 내 생각은 매우 틀렸습니다. 다음 글들을 통해 설명하겠습니다.

1. Machine Learning seems hard (머신러닝은 어려워 보인다)

인터넷의 인플루언서들은 머신러닝은 정말 쉽다고 이야기 합니다. 실제로도 머신러닝을 시작하는 것은 굉장히 쉽습니다. Titanic 데이터를 다운로드하고 python 코드 10줄이면 머신러닝이 가능합니다.

하지만 이것만으로 누군가가 당신을 고용해서 임금을 주지는 않습니다. 그러므로 당신은 더더욱 깊게 들어가야 합니다.

그리고 머신러닝은 레벨이 깊어질수록 더더욱 어려워 집니다. 스스로 공부해나아가기는 더욱 어려워지는 만큼 훌륭한 멘토를 갖는 것은 매우 중요하고, 좋은 인턴십을 경험하는 것도 엔지니어로 성장하기위해 필요해집니다.

그러나 나는 컴퓨터의 다른 분야 사람들과 일을 하기 위해 상당한 시간을 투자해야 했습니다. 머신러닝 엔지니어 멘토를 구하는 것은 매우 어렵기 때문입니다. Front-end, Back-end, Mobile 종사자가 훨씬 많기 때문에 그 쪽의 멘토를 얻는것이 훨씬 쉽습니다.

2. Easier to get a Machine Learning job (머신러닝 취업이 더욱 쉬워진다)

나는 머신러닝을 어렵게 어렵게 공부했지만, Front-end, Back-end, Mobile 개발자 보다 머신러닝 개발자로 일자리를 구하는 것은 더더욱 어려운 일이었습니다.

특히, 소규모 스타트업은 일반적으로 머신러닝 개발자를 감당할 수 있는 리소스가 없습니다. 그들은 이제 막 시작하기 때문에 데이터가 없습니다.

그들은 웹개발, 모바일개발을 통한 서비스를 통해 비즈니스를 시작하고 실행합니다. 그렇다면 당신이 머신러닝 개발자로 취업하기 위해서는 대기업으로 가야합니다. 그러나 대기업은 많지 않습니다.

3. Higher wages (고연봉)

Senior 머신러닝 엔지니어라고 다른 분야의 Senior 개발자보다 높은 연봉을 받는 것이 아닙니다.

미국에 머신러닝 슈퍼스타들이 있지만, 나는 그보다 더 높은 연봉을 받는 다른분야의 개발자들이 많을 것이라고 확신합니다.

4. Machine Learning is future proof (머신러닝은 미래를 보장한다.)

머신러닝은 확실히 미래를 보장할 수 있습니다. 그러나 Front-end, Back-end, Mobile 모두 미래를 보장할 수 있다고 말할 수 있습니다.

만약 당신이 Front-end 개발자로 일하고 있고, 머신러닝을 이용한 웹사이트를 만들어야하는 경우 굳이 머신러닝을 공부하지 마십시오. 이미 머신러닝에 지식이 있는 사람과 파트너로 일하면 됩니다.

5. Machine Learning is Fun (머신러닝은 재밌다.)

머신러닝은 재미있습니다. 하지만 항상 재밌지도 않습니다.

많은 사람들은 머신러닝 개발자가 인공지능이나 자율주행차를 연구할 것이라고 생각합니다. 그러나 그들은 훈련 데이터셋을 구성하고, 머신러닝 인프라를 구축하는 것에서 일할 가능성이 더 큽니다.

많은 사람들은 머신러닝 개발자가 멋진 딥러닝 모델을 사용하고, 신경망 구조를 수정하며, 하이퍼 파라미터를 조정할 것이라고 생각합니다. 일부는 분명 그렇게 일할지 모르지만, 대부분은 그렇지 않습니다.

사실 머신러닝개발자는 대부분의 시간을 "Real-world 문제와 비슷한 분포를 가진 훈련 데이터셋을 잘 추출하는 방법"을 찾고 만들어내는데에 더 많은 시간을 보냅니다. 그런 다음 대부분의 고전적인 머신러닝 학습모델을 훈련하고, 그것들은 충분히 잘 작동 됩니다.

Conclusion

이 게시글은 누군가를 낙담시키려는 의도는 없습니다. 다만 당신이 SW개발을 잘하고 있고, 당신의 일이 즐겁다면 굳이 공부할 필요 없습니다. 일부 머신러닝 tutorial를 해본다고 해서 당신의 경력 발전에 도움이 되지 않습니다.

이 게시글은 인터넷의 인플루언서에게 듣지 못하는 비판적인 견해를 제공하고 올바른 선택에 도움을 주고자 쓰여졌습니다.

개인적 의견

이 포스팅은 실제 현업의 인공지능,머신러닝,딥러닝 개발자들이 어떤 상황에 있는지 정말 잘 표현한 것 같습니다. 저 또한 머신러닝에 대해 이 게시글 작성자의 대학시절 생각과 비슷한 생각으로 시작하게 되었고, 비슷한 것을 느꼈습니다.

머신러닝은 충분히 매력적이고 미래지향적이지만, 상상과 같지는 않다는 것이 분명합니다. 저도 머신러닝일을 하면서, 딥러닝 모델을 만지는 시간 보다는 대부분 효율적으로 컴퓨팅파워를 사용하고, fps를 높이고, 데이터를 수집하고, 또 데이터를 수집하고, 서비스가 목표로하는 인프라를 개발하는 시간이 훨씬 많았습니다.

아무리 '머신러닝' 이라는 이름이 붙었어도 연구자(Researcher)를 목표로하는게 아니라면 이론적인 공부보다는 코드와 함께 개발에 대한 시간을 더 투자하는 것은 좋다고 생각합니다.

개발에 자신감이 붙으면 이미 잘짜여져 있는 example code를 통해 머신러닝 모델을 마이크로서비스에 입히는 것은 매우 쉬울테니 말입니다. (물론 멋진 성능이 나오려면 연구가 필요하고, 이것은 모든 기업에 해당되기에 연구자가 필요하긴 합니다. 하지만 본인이 석박사 출신이 아닌 개발자를 지향한다면 ..)

해당 게시글은 이전에 해석한 게시글과 다른 성격을 띄고 있지만, 저는 두가지글 모두 같은 곳을 바라보고 있다는 생각이 드네요. 물론 저의 개인적인 의견일 뿐이고, 또 다른 세상이 있을지도 모르겠습니다.

p.s. 욕먹을 만한 멘트일지도 모르지만, 딥러닝 머신러닝을 엄청 공부한 석박사분들도 사실 머신러닝을 마스터하기는 쉽지 않고, 대부분의 논문들은 coco데이터셋, imagenet 등 정해져 있는 데이터로 비교하기 때문에 자신들의 데이터에 어떤 모델 구조가 잘 맞는지 논문을 읽더라도 알수가 없습니다. 어떻게 연산하는지 보고자해도 blackbox로 이루어진 딥러닝을 파악해서 수정해나가는 것은 여간 어려운 일이 아니죠. 또 수정해서 acc가 올랐다고 해도 그것이 정말 옳게 수정된걸까요? 아무도 대답하지 못할 것 같네요.. 

그리고 대부분의 모델은 간단한 데이터셋에서 잘 동작하는 것도 사실입니다. 오히려 머신러닝 연구자들은 모델구조 변경을 통해 성능을 올리고자 하는것 보다, 데이터 불균형 해결이나 다양한 데이터, 어떤 상황의 데이터 등 머신러닝을 하기 위한 좋은 데이터를 얻는 방법을 연구하는 것이 좋을 것 같네요. 개인적으로 좋은 데이터가 결국 성능에 훨씬 많은 영향을 미친다고 생각합니다.

긴 글 읽어주셔서 감사합니다!!
저의 개인적인 의견도 조금 비관적이지만 역시 공부하는 사람이 재미있고, 그에 대한 꿈이 있다면 전혀 문제될게 없습니다. 너무 걱정하지 않으셔도 될 것 같네요 ㅋㅋ 그럼 포스팅 마무리 하겠습니다 정말 감사합니다!