본문 바로가기

머신러닝

(11)
모든 ML 알고리즘의 이해 이직 후로는 면접에 들어가지 않고 있지만 면접에서 유능한 인재를 만나면 묻고 싶었지만 아직 한 번도 묻지 못한 질문이 있다. 머신러닝 학습의 핵심이 뭐냐? 는 질문이다. 개별 알고리즘의 개념이 아닌 모든 알고리즘들의 공통된 근간이 무엇인지를 묻는 질문이다. 내가 생각하는 이 질문의 답에 관한 글이다. 물론 내가 틀렸을 수도 있다. 모든 — 적어도 내가 아는 모든 — ML 알고리즘은 유사도 (또는 거리)를 측정하는 거다. 나 (X)랑 닮은 X’를 찾거나 나랑 전혀 다른 X’’를 찾는 것이 ML 알고리즘이다. 회귀 Regression은 나랑 닮은 X들이 공통으로 같은 Y, 보통은 평균을 예측/계산하는 알고리즘이다. 분류 Classificaiton은 나와 근접한 X들이 다수를 점유하는 클래스를 찾는 거다. C..
알고리즘을 경배하라? 우리는 알고리즘의 시대를 살고 있다. '알고리즘'이란 단어가 흔해졌다. 예전에는 평생 들어보지도 못했을 사람들의 입에서 알고리즘이란 단어가 심심찮게 나온다. 제대로 이해하고 말했다고는 보지 않지만 그만큼 알고리즘이란 단어가 흔해졌고 일종의 알 수 없는 전지전능한 무엇을 총칭하는 용어가 됐다. 이글에서 알고리즘의 사전적 의미까지 뒤질 필요는 없을 거다. 그냥 일반인들이 느끼는 알고리즘의 느낌적 느낌에서 시작한 글이다. 어느 순간부터 '알고리즘'은 그저 마법의 단어가 됐다. '알고리즘이 알아서 해줘요'라고 하면 모든 상황이 종결된다. 알고리즘의 간택으로 벼락 유명인이 된 콘텐츠 제작자들의 간증을 유튜브에서 심심찮게 볼 수 있다. 그 단맛을 잊지 못해서 다시 간택을 받으려고 알고리즘 친화적인 콘텐츠를 제작해서..
최적화 알고리즘 누군가 '인생은 속도보다 방향이 중요하다'라고 말하면 이과생이 등장해서 '속도는 벡터로 이미 방향을 포함한 값이므로 속도가 아니라 속력이다'라고 정정할 거다. 정의상 속도는 힘의 방향과 힘의 크기가 결합된 벡터, 즉 '속도 = 방향 + 속력'이다. 늦더라도 언젠가는 원하는 목표를 이루는 사람들을 보면 인생에서 방향이 중요한 듯하다가도 속력이 크면 더 빨리 성공하거나 실패하더라도 아직 젊으니 새로운 도전을 할 수 있어 속력이 더 중요한 듯하기도 하다. 사람마다 가치관과 방식이 모두 다르니 방향이니 속력이니 하는 논쟁은 각자의 사정에 맞게 잘 조절하면 된다. 어쨌든 인생에서 방향과 속력이 모두 중요하듯이 최적화도 방향과 속력이 중요하다. 머신러닝 모델을 최적화하는 방법은 "An Overview of Grad..
모델 복잡도의 개념 모델의 복잡도는 다양한 관점에서 정의되고 설명될 수 있어서 조심스러운 주제다. 좀 더 이론적이고 종합적으로 설명해야 하는 주제인데, 능력의 한계로 아주 지엽적이고 편향되게 설명할 수 있으니 다른 텍스트북이나 글들을 참조해서 개념을 제대로 정립했으면 하는 바람이다. 복잡도를 다스리는 여러 테크닉들은 다음 글로 미루고 오늘은 복잡도의 개념이나 원인 등에 관해서만 적는다. 복잡한 모델은 뭘까? 비선형 모델은 모두 복잡할까? 모델의 독립변수 (X) 종류와 개수가 많으면 복잡한 걸까? 트레이닝 데이터에 과학습(over-fit)되면 복잡한 걸까? 아니면 여러 잡다한 모델들을 앙상블 하면 복잡한 걸까? 이외에도 복잡한 모델에 관한 다양한 의문이 있을 수 있고, 그런 모든 의문이 어쩌면 모델 복잡도의 여러 측면을 잘 ..
현업 데이터 과학자가 되려는데 굳이 이런 것까지 공부해야 합니까? 답글로 달기에는 글이 길어질 듯해서... (극히 개인적인 의견이니 그냥 참고만...) 딥러닝 기술을 바이오 데이터에 적용하는 걸로 석사를 졸업했다. 나는 취업해서 그냥 데이터 사이언티스트가 되고 싶다. 실무자가 되기 위해서 굳이 알고리즘의 수식을 유도하고 코드를 구현하는 걸 공부해야 하나? 머신러닝 이론이 실무에 그대로 활용되는가? 그냥 데이터 다루는 법이 더 중요하지 않나? 소프트웨어 엔지니어 수준의 개발 지식과 기술이 필요한가? 첫 줄 요약. 당장은 필요 없다. (일단 취업된다는 가정 하에) 하지만 레벨업을 위해선 미리미리 준비해야 한다. (언젠가 해야 한다면 어릴 때… == 취업 후에라도) 데이터 과학자도 여러 종류가 있다. 가장 하드코어 하게는 인공지능 연구실로 진학해서 더 나은 새로운 알고리즘을..
인문계열 졸업생인데 데이터사이언스를 하고 싶어요. 올해 들어, 특히 판교로 이주한 후로 블로깅을 포함해서 외부 활동을 거의 못하고 있어서 하반기부터는 운신의 폭을 넓혀갈 계획이었는데, 마침 고민 상담이 들어와서 글을 적습니다. 점점 이런 글이 두려워지는데 내가 과연 바른 조언자인가에 대한 두려움, 그리고 각자가 가진 특수성을 무시하고 일반화된 얘기 또는 제 경험에 편향된 얘기를 할 것 같아서 두려움이 앞섭니다. 개인적 편향을 감안해서 읽어주셨으면 합니다. 더 복잡한 사정이 있겠지만, 질문 들어온 것만을 요약하면... ‘인문계열 (사범대) 졸업생으로 현재 스타트업에서 기획을 하고 있는데, 데이터사이언스를 하고 싶어요. 산업공학 대학원 진학도 염두에 두고 있지만, 현재 기초가 없어서 패스트캠퍼스의 데이터사이언스 과정도 고려하고 있어요.’ 정도입니다. 산업공..
Regularization: 복잡도를 다스리는 법 개인적으로 전문용어가 어색하게 한글화되는 것을 별로 좋아하지 않는데, regularization도 그런 경우에 속합니다. 적당한 한글 용어를 찾기가 어렵습니다. 인터넷에 검색해보면 '규제화'라고 번역한 경우를 봤는데 페널티로 모델 복잡도를 제어하는 방식에는 유효하지만 다른 방식에는 조금 어색한 표현입니다. '일반화'는 그냥 generalization를 번역한 것 같지만 또 한편으론 학습오류와 테스트오류를 합친 generalization error를 줄인다는 의미처럼 보여서 나름 합당한 면이 있습니다. '정규화'라고 번역한 경우도 있는데 개발자들이 많이 사용하는 regular expression을 정규식이라고 부르니 정규화도 타당한 번역이지만 데이터를 정규 분포를 따르도록 만드는 normalization,..
자기강화와 GAN: 부족한 정답세트를 극복하는 방법 데이터 마이닝이나 머신러닝, 인공지능 AI 등에 관한 심도깊은 얘기는 다루지 않는다. 내가 그런 심도깊은 일을 하고 있지 않기 때문이기도 하거니와 그런 내용은 학교에서 정식으로 배우거나 많은 연구 논문을 읽으면서 터득해야할 영역이다. 개인적인 요청이 있다면 그걸 위해서 가이드해줄 수는 있지만 이 티스토리에서 그걸 해결해줄 수는 없다. 하지만 2017년에는 공부 좀 하기로 마음을 먹었으니 필요하면 특별한 주제에 맞춰서 또는 머신러닝 알고리즘의 전반적인 것에 대해서 종종 다루려 한다. 계획이 그렇다는 것이지 몇 번을 다룰지는... 최근이라 적고 작년 2016년에 가장 큰 이슈가 됐던 강화학습과 GAN (Generative Adversarial Networks)에 대한 소개 또는 개념적 이해를 돕기 위해서 글..