@cppp:
- 음... 지금 하신 말씀은 대부분 Signal Processing에 집중되어 있군요... 당장 ML의 보편적 강좌인 Stanford CS231이나 CS229의 경우에도 frequency 이야기는 없던걸로 기억하는데...(말씀하신 개념들은 제가 전부 Computer Graphics를 공부하면서 익힌 개념들입니다) 말씀하시는 개념들이 제가 생각하는 Time Series와는 많이 다른 것 같습니다. 애초에 Time Series가 쓰이는 도메인이 제한되어 있다고 알고 있는데 이거랑은 전혀 다른 맥락에서 이야기하셨다고 이해해도 괜찮을지요? 아예 맥락이 다른 측면에서 이야기가 되었다면 제가 반박할 부분이나 운체조교님께서 제 이야기에 반박할 여지는 서로 없다고 판단됩니다.
: 질문이 frequency domain을 이해하고 있냐의 질문이었고, Vision을 하던 time series를 하던 신호에 대한 이해는 매우 기초적인 영역에 속한다고 생각합니다. Vision 하는 사람이 LPF가 뭔지 HPF가 뭔지 Convolution이 뭔지 모르면 당황스러울 것 같습니다.
또한 CS231n (229는 제가 안봐서...) 은 딥러닝 기반 컴퓨터 비전 과목인데, 절대 기초과목이 아닙니다. Murphy 의 Machine Learning 같은 책이 훨씬 기초에 가까운 과목이죠. Signal processing을 안다루는 이유는 signal processing이 더 기초적인 과목이기 때문입니다.
- PCA나 norm 등 수리통계적 계념들에 대해서도 말씀을 주셨는데, 말씀하신 내용들은 개인적인 생각에는 사실 전공자나 혹은 오랫동안 데이터 분석쪽에 종사하신 분이 아니라면 좀 알기 힘든 점이 많다고 생각합니다. "당연히" 라고 말씀은 하셨는데 좀 모호한 표현이 아닌지? 그 도메인이 얼마나 다양한데 그걸 다 알 수 있을지요? 요즘 ML 채용은 대부분 도메인을 나눠서 채용하는 것 같은데 그에 맞춰서 면접 질문이 다르다고 생각합니다. 가령 비전쪽 채용인데 BERT를 물어보거나... 는 좀 그렇지 않을까요?
: PCA는 ML 전공에게는 그정도의 교양이 되었습니다. ML 전공이 PCA나 norm이 뭔지 모른다는건 ML 교과서 한권도 처음부터 끝까지 안봤다는거니까요. 사실 BERT나 Self-attention 같은 NLP에서 쓰이는 개념들도 최근 비전 트렌드를 따라가고 있다면 알만한 내용들이구요.
0. 해당 정리에 대한 증명의 이해 없이 해당 내용을 제대로 이해했다고 할 수 있을지요!!!!(물론 이건 논쟁의 여지가 있긴 할 것 같습니다)
: 괴델의 불완전성 정리의 증명을 이해하지 못해도 그것의 implication을 받아들이는 것은 가능합니다. 수학이나 응용수학 바운더리에서 일하시는 분들이라면 모르겠지만, 공학하는 사람들은 정리에 대한 전제와 implication이라도 제대로 이해하면 좋겠습니다. 대부분은 전제도 모르고 implication도 모르고 기계적으로 갖다 씁니다.
1. "선형대수에 대한 감"은 (정말 감히 말씀드리자면) 너무 모호한 표현입니다. 어디까지 알아야 할까요? 여러분이 그냥 막 갖다쓰는 transpose도 함수해석적으로는 dual space(운체조교님 정도의 고수정도라면 아실걸로 생각되긴 합니다만)랑 관련되구요. 그 외에도 뭐 대수학, 위상수학 안건드리는데가 없습니다. 수학적으로 들어가면 끝이 없습니다. 그 쉬운 선대마저도요.
: 지식이 양과 범위는 중요한 것은 아닌 것 같고요, 선형대수의 굵직한 개념들과 정리들, 그리고 그 정리들의 assumption을 잘 이해하고 있으면 될 것 같습니다. 이것만 해도 감지덕지입니다.
2. PCA가 적용되는 데이터, 적용되지 않는 데이터... 글쎄요 개인적인 경험을 바탕으로 드리는 말씀이므로 적당히 걸러 들어주셨으면 좋겠습니다만, PCA의 경우 categorical data(이쪽은 marketing science에서 MCA라는 기법을 돌리고 있더군요)가 아닌 이상에야 크게 문제되지 않다고 생각하는데, 어떻게 생각하시나요? 그리고 PCA가 잘 적용되었는지를 판단하는 객관적 measure가 있을까요? 혹시 있다면 알려주실 수 있으실지요? 애초에 PCA 자체가 unsupervised learning이라 measure가 임의적으로 이용자가 설정하는 Threshold로 주어지는 걸로 아는데, 그 이외에 객관적인 measure를 혹시 알고 계셔서 알려주신다면 저에게도 큰 공부가 될 것 같습니다.
: PCA는 모든 상황에 따라서 쓸 수 있는 툴이 절대 아닙니다. Pareto distribution의 데이터에 대해 PCA를 돌린다고 생각해보세요. Long tail 때문에 평균과 singular value가 모두 왜곡됩니다. 차원이 매우 큰 데이터가 애초에 높은 엔트로피를 가진다고 생각해보세요. PCA를 해봤자 유효한 축의 개수가 원래 차원의 개수랑 비슷하게 나오면 의미가 없겠죠. PCA는 데이터가 매우 크지만 결국 그 데이터들을 고차원의 데이터들의 선형결합으로 설명할 수 있다는 가정을 갖고 사용하는 툴입니다.
잘 적용이 됐는지를 판단하는 것은 적용하는 상황에 따라 다릅니다. PCA를 통해 dimensionality reduction을 하고 싶다면 explained variation (EV)을 볼 수 있겠죠. RANSAC처럼 갖고 있는 데이터를 랜덤하게 fitting 시켜보면서 이 데이터에서 몇개의 축까지를 take 하는게 허용되는 에러 바운드 안에서 축을 줄일 수 있는 것인지를 볼 수 있을거고요.
3. correlation matrix랑 covariance matrix는 어떤 맥락에서 나오신 말씀인지 이해가 잘 가지 않습니다. 일반적으로 통계학에서는 covariance matrix(흔히 sigma로 notating하는)를 사용하는 걸로 알고 있는데, correlation matrix랑 covariance matrix가 중요하게 차이를 보이는 사례를 말씀주신다면 큰 가르침이 될 것 같습니다.
: 데이터의 축간의 scale이 같으면 covariance matrix를, 다르면 correlation matrix를 구한 뒤 eigen decomposition 을 돌리는게 PCA를 적용할 때 취하는 일반적인 접근입니다.
4. Projection에 dot product(inner product) 이상의 연산이 필요한가요? norm은 어디까지나 metric space의 distance 개념의 확장인데 projection에 왜 필요한지 이해가 가지 않습니다.
: Dot product 와 inner product 는 euclidean space에서만 같습니다. Inner product는 공간마다 정의되고, 그 정의되는 방법은 행렬입니다. 예컨데 euclidean space에서의 내적 행렬은 identity matrix이고, 통계학에서의 내적 행렬은 Fisher's information matrix입니다. 이 전제를 모르고 projection을 하면 저차원으로 문제가 풀리는 상황에서야 큰 에러가 없어보이겠지만 차원이 높아질수록 값이 이상해집니다.
5. ML 논문을 어디까지 읽으시는지 알지는 못하겠습니다만, 요즘 ML 논문의 경우 도메인이 너무 분화되어서 말씀주신 선형대수나 다변수미적분(학부수준)으로는 간단한 실험 논문 정도밖에 못읽지 않나... 생각합니다. 그리고 애초 여기서 논문 이야기를 하시는 이유를 잘은 모르겠습니다만, 논문을 건드리는 순간부터 ML 분야는 이론으로 넘어갈 수밖에 없고, 지적하신 "선대"나 "다변수미적"으로는 커버하기 힘든 석박사 수준 이상으로 레벨이 올라가지 않을까 생각합니다.
: 여러 측면으로 그렇지 않습니다.
먼저 저는 선형대수와 다변수미적이 익숙해져야 ML 논문을 이해할 수 있다고 말씀 드린 것이지, 그것만 알면 모든 ML 논문을 이해할 수 있다고 말한게 아닙니다. 기본 중의 기본이라는 뜻입니다. 다른 나라는 제가 잘 모르지만, 일반적인 우리나라 학부에서 수학 교육이 제대로 안이루어져서 대부분의 학생들이 기억도 잘 못할 뿐더러 선형대수와 다변수미적이 손에 익어 있지 않습니다. 당장 Stokes' Theorem 설명해 보라고 하면 버벅거리고 선적분도 못하는게 현실입니다. (다 1학년 때 배우는 수학인데...) 이 상태에서 공학수학이나 최적화이론 배우고 논문 읽어봤자, 제대로 이해 못합니다.
또한, ML 분야에 수학과 박사 수준의 수학을 요구하는 논문들은 비율로 따지면 매우 적은 편입니다. 수학과 석사 정도의 지식이면 읽을 수 있고, 그 수학과 석사 수준은 대부분 공대 학부 때 증명은 스킵하고 결론의 형태로 머리속에 주입됩니다. (대부분 까먹어서 그렇지...)
제가 드리고 싶은 말씀은, 공부를 제대로 해야 합니다. 말씀하신 것들을 보면, 많은 것들을 배우셨으나 그 내용들이 organization이 잘 안되어 계신 것을 느낍니다. 제가 알지도 못하면서 떠드는 것일 수 있으나, 저는 주변에서 대략 딥러닝 쓰는 법만 뚝딱 배워서 근거 없는 hyperparameter tuning만 열심히 해서 논문 한편 더 내보려고 하는 대학원생들이 떠오릅니다. 그들은 왜 그런 디자인을 했는지 물어보면 대답을 못합니다. 그냥 결과가 잘 나온다는 얘길 할 뿐이죠.
안타까운 것은 이런 학생들이 ML 탑컨퍼런스 논문을 억셉 받아오기도 한다는겁니다. (임팩트 있는 논문을 쓰는 사람은 못보긴 했으나...) 그렇게만 결과를 내보면 계속 같은 방법을 고수할 수 밖에 없고, 결과적으로 논문만 쓴 바보가 되어서 졸업하는 경우가 너무 많습니다.
이게 대학원에서는 ML 쪽 학회들이 건강하지 않기 때문에 어떻게 넘어가지만, 진짜 의미있는 모델을 현실에 deploy 할 때는 큰 문제가 됩니다. Accuracy 99%를 찍는 것과 소비자가 만족하는 ML 기반 서비스를 하는 것 사이의 엄청난 간극이 있거든요.
이건 ML 뿐만 아니라 개발 등 웬만한 공학에선 다 벌어지는 일이라고 보는데, 잘 될 때는 바보가 와서 해도 잘 되지만, 진짜 실력은 안되는 상황을 극복할 때 나타납니다. 적용하기 위해서 뭘 keep하고 뭘 버릴지를 선택하는 상황에서는 어떤 근거를 갖고 현상을 모델링할지가 너무나도 중요해 집니다.
어느 수준에서 공부하시는 분이신지 잘 모르지만, 진심으로 machine learning 교과서 한권 읽어보시는 것을 추천 드립니다. (Murphy의 Machine Learning을 권합니다) 그리고 개념들을 설명해보는 연습을 자주 해보세요. 실제 상황에서 문제를 푸실 때도, 모델을 그냥 갖다 쓰는게 아니라 이 모델의 assumption이 뭐고, 왜 이게 잘 되는지, 왜 안되는지를 꼭 따져보셨으면 합니다. 주제 넘는 얘기였지만, 도움이 되길 바라면서 써봅니다.