목록기초 노트/EECS 498-007 (ComputerVision) (12)
플로라도의 data workout
이번 강은 Attention에 대해서 다룬다. 지난 시간에는 새로운 구조의 NeuralNet인 RNN에 대해서 배웠다. RNN은 서로 다른 시퀀스의 벡터를 다룰 수 있는 강력한 신경망 구조였다.MLP와 같은 일반적인 Feedforward neural network(순방향 신경망)에서 Recurrent Neural Networks(순환 신경망)로 오면서 우리는 machine translation, image captioning과 같은 다양한 테스크를 해결할 수 있게 되었다. 지난 시간의 내용을 다시 한번 떠올려보자.sequence to sequence with RNN의 문제는 무엇이었을까RNN은 $x_1$에서 $x_T$까지의 sequence를 입력으로 받는다. output은 $y_1$에서 $y_{T^`..
오늘은 새로운 종류의 신경망인 RNN에 대해서 다룬다. 본격적으로 시작하기 전에, 우리가 지난 강의 딥러닝의 소프트웨어와 하드웨어를 다룬 장에서 파이토치와 텐서플로우를 비교한적이 있었는데 현재 강의하고 있는 전후인 19년도 10월 10일에, 파이토치 1.3이 업데이트 되었다.파이토치가 더 선호되면서도, 텐서플로우보다 모바일에서 배포하기 까다로운 단점이 여전히 있던 문제가 있었는데이제는 금번 업데이트로, 이론적으로 모바일에서도 배포하기 좋은 환경이 되었다! 이렇게 한 학기에도, 심지어 1~2주전에 다룬 내용이 outdated되는 걸 볼 수 있는게 바로 딥러닝 분야이다.! 우리는 지난 두번의 강의에 걸쳐 신경망 학습의 기본 전략(nuts and bolts)에 대해서 자세히 다루었다.이제 우리는 ConvN..
Neural Net을 학습시킬때 고려해야 할 요소들에 대해서 알아본다. Neural Net을 학습시킬때는 학습 사전에 결정되어 진행되는 것들이 있고 Learning rate schedule과 같이 학습중에 동적으로 변동되는 것들이 있으며 훈련이 모두 마친후 모델 앙상블, 혹은 전이학습(Transfer Learning)과 같이 좀 더 downstream task로 나아가는 방법이 있다. 첫번째로 알아볼 것은 활성화 함수(Activation Function)이다. NeuralNet에서 활성화 함수로서 선택할 수 있는 대표적인 선택지이다. 디테일에 대해서는 지난시간 내용을 다시 참고하길 바란다. 학습시 Acitvation Function을 Sigmoid함수로 설정했을때의 기능에 대해서 알아보자. Sigmoid..
이번시간에는 CNN의 아키텍쳐에 대해서 다뤄본다. 게시물 작성 시점인 2024년 기준으로 강의 내용에서 소개된 모델 이외에도, 더욱 효율적이고 정확도면에서 우수한 모델들이 다수 발표되었고(2019년, EfficientNet) 2020년 VisionTransformer의 발표 이후에는 ViT계열 모델들이 매우 대두되던 시기가 있었다. (2020년; DETR, 2021년 ; SwinTransformer) 하지만 Transformer계열 모델들은 리소스가 크고 학습양을 상당히 필요로 하기 때문에, 이후 다시 CNN계열로 Transformer계열을 잡을 수 있지 않을까? 하는 생각으로 CNN계열 모델이 다시금 연구되었다. (ConvNext, ResNest) 하지만 모든 CNN계열의 아키텍쳐들은 이전 모델들의 아..
오늘 강의의 주제는 이미지 처리 분야의 가장 메이저한 모델인 Convolutional Networks이다. 지난 강에서는 Backpropagation 알고리즘에 대해 배웠다. 복잡한 네트워크 구조의 gradient를 전부 계산하는 것이 아니라 저장된 forward pass의 정보를 이용하여 local한 연산을 통해 gradient를 계산하는 방식이다. 또한 이러한 방식을 활용하는 방법 중, Modular API방식으로 활용하는 것을 배웠다. 다음으로는 Linear Classifier과 신경망의 Fully connected Linear Classifier에 대해서 배웠다. 많은 함수를 표현할 수 있는 강력한 성질이 있지만, 두 모델의 구조 모두 2D의 공간적 구조를 고려하지 못하고 input RGB이미지를..
이번 강은 Backprogation(역전파)에 대해서 다룬다. 지금까지의 내용은 Linear Classification의 한계를 넘어서는 NeuralNet의 특징, Space Warping과 Activation fucntion을 추가하여 비선형적인 표현을 할 수 있는 것, Universal Approximation에 대한 개념과 신경망의 Loss surface는 다양한 형태의 Non-convex function으로 존재함에도 불구하고 optimization되어 실전에서 어떻게든 작동한다고 배웠다. 또한 위와 같은 loss function으로 현재의 가중치에 대한 happiness or unhapiniess를 표현하고, SGD와 같은 알고리즘으로 가중치를 업데이트 한다고 배웠다. 여기서 문제는 gradie..
이번 강의 주제는 드디어 Neural Networks(신경망)이다. 지금 까지 배운 내용에 대한 요약이다. 1. 먼저 우리는 knn과 같은 non-parametric classifier가 아닌, parametric classifier를 만들기 위해서 Linear model에 대해서 다뤘다. 2. 다양한 weight의 세팅에 대해서 우리의 happiness or unhappiess를 표현하기 위한 수단인 loss function에 대해서 다뤘다. 3. 그 다음 weight를 업데이트 하는 방법인 Iterative method - gradient descent의 변형들 (SGD+momentum 그리고 Adam , RMSProp) 등의 optimization에 대해서 배웠다. 우리는 다시 1번에서 등장한 Li..
이번 강에서는 Optimization에 대해서 다룬다. Optimization의 topic은 Loss funciton에 input으로 $W$ matrix를 주었을때 output인 Loss를 최소화하는 $W_*$를 찾는 것이다. Optimization은 앞이 보이지 않는 남자가 산비탈을 탐험 하는것과도 같다. 이러한 산비탈은 고차원의 풍경(high dimensional landscape)이라고 표현할 수 있다. 이 사람은 앞이 보이지 않기 때문에 산비탈에서 어떻게 optimal $W_*$를 찾아가야할지 모르는 상황이다. 남자가 밟고있는 ground의 $x,y$좌표는 각 $W$ matrix의 특정값을 의미하고 비탈의 높이는 $Loss$값을 의미한다. Linear Regression과 같이 남자가 바닥에서 출..
3강에서는 Linear Classifier에 대해서 다룬다. Linear Classifier는 심플하지만 Neural Network를 만들때 중요하다. Neural Net은 블럭을 쌓아 만드는 것과 같은데, 이러한 레고 블럭의 가장 기본이 Linear Classifier이다. CIFAR10 데이터셋을 다시 떠올려보자 이전 강의 및 K-NN Classifier와 달라진 점은 Learnable parameter인 W가 추가되었다는 점이다. 이것이 Parametric Approach이다. parameter 혹은 weight(가중치)라고 불리는 이 W에 우리의 training data의 모든 정보를 요약하여 담길 원한다. f(x,W)의 함수의 형태는 input x와 W를 통해 여전히 10개 클래스 스코어를 뱉어..
Image Classification은 컴퓨터 비전에서 가장 핵심적인 task이다. 그러나 그것이 쉽지는 않다. 컴퓨터는 고양이 이미지를 보고 단박에 고양이('cat')라고 알 수 없다. (Computer can't get holistic idea of cat) 컴퓨터가 보는 것은 단순히 [0,255] 픽셀 값으로 이루어진 숫자 그리드 형태이다. 이것을 "고양이"라는 의미론과 대비되는 "Semantic Gap"이라고 한다. 심지어 고양이가 조금 움직인다면, 고양이가 서있다가 앉아있게 된다면, 픽셀값은 전부 변하게 된다. 이러한 변화에도 사람은 여전히 고양이라고 알 수 있지만, 컴퓨터가 이것을 여전히 같은 고양이라고 말하는 것은 쉬운일이 아니다. (-> 이러한 변화에 robust한 모델을 만드는 것이 목표..