항상 논란의 대상(?)인 컴공입니다.

이건 농담이고


걍 별건없고 컴공입장에서 주로 메이저한 ML 도메인(비전 등)에서 신경망을 어디다 쓰는가 정도임

내가 1학기때 비전강의를 들었으므로 비전 위주로 얘기해보겠음

NLP는 잘모름


주로 이런 영역에서 신경망을 바라볼때는 어떤 통계 모델이라는 관점보단 

(Universal) Approximator의 관점으로 봄

비전 같은 경우에 이미지를 어떻게 잘 조지고 볶아서 우리가 원하는 실생활에 도움이 되는 뭔가를 해야함

얘를 들면 이미지에서 특정 물체를 탐지하고(object detection), 특정 물체가 있는 영역을 찾고(segmentation)

같은 물체나 장소를 다른 각도에서 찍은 여러장의 이미지를 가지고 그 대상의 3D 구조를 복원하거나 뭐 그런 태스크들

딥러닝 이전엔 https://gall.dcinside.com/mgallery/board/view/?id=math&no=17997 요런 알고리즘 같은것도 많이 쓰임.

보통 그런건 밝기변화 같은걸 중심으로 많이 둔다.

예를 또 한 가지 들어보면, 다른 각도에서 찍은 이미지들을 가지고 3D Point cloud를 만들려면, 우선 서로 다른 이미지에서, 같은 점을 나타내는 픽셀 몇 개를 찾아야함.

그럼 이걸 자동으로 어떻게 찾느냐? 이미지의 각 픽셀들의 주변 밝기 변화(=그래디언트) 등을 잘 분석해서, 기준점으로 삼기 적절한 점을 찾는다.(keypoint detection 이라고 함)

그리고 그 점의 주변 변화라던가 이런 정보들을 가지고 이 점의 특성을 나타내는 고차원의 feature vector를 뽑는다.(64차원, 128차원 등...)

그 후 이제 두 이미지에서 KNN같은 걸로 가장 feature가 비슷한 특징점들을 고름

대표적인게 SIFT(Scale Invariant Feature Transform)같은 게 있음

뭐 보통 이런 태스크들로 가는데... 이제 신경망을 어디다 쓰냐면

어떤 원하는 태스크에 대해서 어떤 좋은 함수가 있으면 잘 돌아가는 알고리즘을 설계함

그런데 그 좋은 함수를 직접 construct하기가 힘들다.

그럼 이제 원하는 input-output 데이터를 모아서 그 함수를 잘 근사하는 신경망을 만들고 쓰면 됩니다.


유명한거 하나 골라오자면 NeRF(Neural Radiance Field) https://arxiv.org/pdf/2003.08934.pdf

이게 뭐하는거냐면 서로 다른 각도에서 본 물체 사진을 가지고 이제 인풋 데이터에 없는 각도에서의 물체 사진을 뽑아냄

이 태스크를 어떻게 수행하냐면 해당 시점의 spatial location (x, y, z)와 각도(phi, theta)를 인풋으로 받아서 

density와 RGB값을 뽑아주는 함수를 만든다. density는 대충 Ray가 얼마나 가려지는지 정도로 이해하면 됨

이 정보들이 있으면 이제 렌더링을 할 수 가 있음

그래서 신경망 훈련 시에는 ground truth의 Rendering loss를 가지고 훈련시킴

물론 그냥 나이브하게 만든건 아니고 논문을 보면 해당 position을 삼각함수를 써서 고차원의 벡터로 임베딩한다음에 인풋으로 씀

보통 비전 태스크에서 데이터를 전처리하는 일은 이런 식으로 적절한 도메인 지식을 써서 feature engineering을 해서 알고리즘이 잘 돌아가게 하는게 주요 내용인 것 같음. 아까 얘기한 SIFT같은 경우 scale invariant를 달성하기 위해 이미지의 여러 배율의 확대 버전을 동시에 고려해서 만든다던가... 뭐 그럼

비슷하게, 모델 아키텍쳐 이상으로 중요한 게 원하는 목표를 달성하기 위해 minimize해야 할 loss를 잘 만드는 것도 주요 contribution인 것 같음


또 다른 예시, 

https://vision.in.tum.de/research/vslam/dvso

간단하게 설명하자면, SLAM(혹은 Visual Odometry)를 하는데 이제 카메라를 가지고 하려면 보통 스테레오 카메라가 필요함

사람도 양 눈으로 거리감을 구분하니까 당연하다.

스테레오 카메라를 가지고 disparity map이라는 걸 만들어서 알고리즘을 잘 돌리는데 이제 이걸 monocular 카메라로 하고 싶다 이거지.

그럼 어떻게 하냐? monocular 카메라의 이미지를 받아서 Virtual 한 stereo 이미지의 disparity map을 만드는 신경망을 훈련시킨 다음에 잘 써먹으면 됩니다.

마찬가지로 loss가 복잡한데 reconstruction error를 이용한 self-supervised loss 등 여러가지 loss를 가지고 잘 조합해서 만듦


뭐 아무튼 컴공에서 주로 하는 일들은 요런 거고, 뭐 비슷하게는 그래프 데이터에 대해 데이터마이닝을 하는데 적절한 함수가 필요하면 Graph Neural Network를 만든다거나, 강화학습에서 Q함수 혹은 policy 함수를 신경망으로 근사하거나 이런 것들이 비슷한 맥락이라고 볼 수 있겠음


그래서 교수님들중에 수학 좋아하시는 분들이나 이론 위주로 연구하시는 분들은 주로 통계보다는

optimization에 메인을 두고 하시는 것 같음.(근데 본인도 학부생 나부랭이라 잘 모르긴함)

컴공에서 이론적으로, 수학적으로 주로 ML에 대해 다루는 컨퍼런스는 ACM COLT(Conference on Learning Theory)가 있음.

한국에선 카이스트 AI대학원에 자주 쓰시는분 한분 계시는걸로 알고. 근데 COLT가 그렇게 메이저한 컨퍼런스는 아니라서 연구주제보면 쓸만한거같은데 안내시는 분들도 좀 계시는듯

그외에 메이저 컨퍼런스중엔 ICLR이 좀 이론적인내용 많이 나오는거같고 ICML이나 NIPS는 덩치가 너무 커져서 관할하는 범위가 매우 넓어진듯

그렇다고 이론적인게 안나온다는건 아니고... (2018 NIPS의 Neural ODE나 NTK등등...)

Error Bound나 뭐 그런걸 분석할때는 주로 통계적인 얘기를 하기보단 확률론적인 부등식을 사용해서 바운드를 많이 잡는 것 같음. PAC learning도 그런 관점에서의 이야기고, 또 information theory도 다들 좋아하시는 것 같다.


암튼 뭐 그렇습니다.

뭐 그냥 단순히 컴공은 통계못한다 할 수 있겠지만 일단 보는 관점이 좀 다르다는 거고...

교수님들 보니까 통계를 딥하게는 안해도 수학은 다들 잘하심 특히 확률론, 최적화같은거

SDE같은거나 Optimal Transport같은거 쓰시는분도 좀 있던데(여담으로 CVPR 표절논문 그것도 neural sde쓰는거같던데... ㅋㅋㅋㅋㅋ)

저쪽 경제학이론갤 보니까 통계랑 계량경제에서 보는 관점도 또 다르다 그러던데 거기까진 잘 모르겠고

암튼 서로 싸우거나 깎아내리거나 하지말고 돕고 친하게 지내요


여담) 한참 파비로 불탈때 보니까 공대생이 여기 왜오냐 뭐 그런 얘기 많이 하던데

수학과 복전하고있고 수학좋아서 수잘갤 자주 들락거리는데 거기서 누가 통계문제 물어본거에 통계갤로 가라는 댓글있어서 보고 찾아와봄