본문 바로가기

전체 글

(75)
SPPnet(Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition) Fast R CNN이 영감을 받았다는 SPPnet이다. Kaiming He가 1저자로 있다. Contribution 1. Spatial pyramid pooling을 이용해서 다양한 size/scale의 input에 대해 fixed-length representation을 만들 수 있고, 그러므로 학습 시킬 수 있다. 2. CNN architecture를 가리지 않고 성능 향상이 가능하다. 3. Object detection에서 기존 R CNN과 비슷한 성능을 내면서 최대 100배 이상 빠르다. 기존의 CNN은 fixed input image size를 요구했다. 따라서 우리는 이미지를 crop하거나, warp할 수 밖에 없었다. 이미지를 crop하면 전체 이미지를 포함하지 못하는 문제가 발생하고, 이미..
레드 블랙 트리 기존의 이진 검색 트리는 깊이가 원소 수 만큼 늘어날 수 있기 때문에 성능을 보장 받지 못한다는 단점이 있다. 그래서 이진 검색 트리에 몇 가지 제약을 걸어서 만든 것이 레드 블랙 트리이다. 레드 블랙 트리의 조건 1. 루트는 블랙 2. 리프는 블랙 3. 노드가 레드이면 자식은 블랙(no double red) 4. 루트에서 리프까지 만나는 블랙의 수가 일정하다. + 삽입된 노드는 레드 여기서 모든 리프가 블랙이라는 것은 우리가 생각하는 리프에 해당하는 말이 아니다. 위와 같이 자식이 하나이거나 없는 경우 NIL이라는 가상의 리프 노드를 붙여주고 블랙으로 만든다. 레드 블랙 트리는 이진 검색 트리에 이런 저런 조건을 건 것이므로 기본적으로 이진 검색 트리라고 할 수 있다. 즉 모든 삽입과 삭제는 이진 검색..
한국어 임베딩 : 1장 임베딩이란? 임베딩(embedding)은 자연어를 벡터로 바꾼 결과물, 혹은 벡터로 바꾸는 일련의 과정을 의미한다. 임베딩만 잘하면 어떤 모델을 써도 성능이 보장되고, 임베딩을 못하면 아무리 좋은 모델을 써도 좋은 결과를 얻기 힘들다고 한다. 그렇다면 좋은 임베딩의 조건은 무엇일까? 좋은 임베딩에 대해 이해하려면 임베딩을 하는 이유부터 파악해야 한다. 우리는 자연어를 언어 자체로 이해하지만, 컴퓨터는 숫자를 가지고 계산하는 기계일 뿐이다. 따라서, 자연어를 컴퓨터가 이해할 수 있는 벡터로 바꿀 필요가 있다. 이렇렇게 자연어를 벡터로 전환하는 과정에서, 그 벡터 안에 자연어의 의미를 함축시키는 것이 관건이다. 임베딩의 역할을 3가지로 구분할 수 있다. -자연어 간의 유사도 파악 -의미적/문법적 정보 함축 ..
CS231n 2017 Lecture 7 : Training Neural Networks II 오랜만에 본다. 저번 강의에서 다룬 normalization에 대한 첨언이다. 같은 classifier라도 data의 value가 크면, weight가 약간만 바뀌어도 classification 결과가 바뀔 수 있다. Normalization을 통해 model을 좀 덜 sensitive 하게 만들 수 있다. 오늘 배울 것들 SGD의 단점1 : Gradient에만 의존하기 때문에 상대적으로 완만한 방향으로는 진전이 느리고 경사가 급한 방향으로 많이 이동해서 지그재그로 경사면을 내려간다. 위 그림을 가로 축 w1, 세로 축 w2라고 생각하면, w1의 gradient가 w2의 gradient에 비해 많이 낮다. 이럴 때 condition number가 높다고 한다. 차원이 늘어나면 가장 낮은 gradient와..
CS231n 2017 Lecture 6 : Training Neural Networks I 이번 강의의 overview이다. 다양한 non-linear function에 대해 알아볼 것이다. Sigmoid는 위와 같이 생겼다. 3가지 문제점이 있는데, 1. 중심에서 멀어지면 gradient가 죽는다. 2. Output이 0~1이므로 zero-centered 되어 있지 않다. 3. exp() 함수가 비용이 크다. 1,3은 직관적으로 이해가 가는 부분이다. 그런데 zero-centered는 왜 문제가 되는걸까? 저기서 w1,w2,...wn의 local gradient가 x1,x2...xn이다. 그런데 x가 이전 layer의 sigmoid를 거쳐서 나온 값이라고 하면 x는 모두 양수이다. L = w1x1 + w2x2 ... 라고 하자. Chain rule을 적용할 때 L의 gradient와 w의 l..
CS231N Spring 2020 Assignment1 : Features yun905.tistory.com/5?category=878116 CS231n 2017 Lecture 3 : Loss Functions and Optimization Lecture 2에서 배운 내용의 review로 시작하는 Justin. Linear classifier는 W를 가지고 있었고, 각 W 값은 해당 픽셀이 얼마나 score에 영향을 끼칠지 결정한다. 이번 시간에 배울 loss function과 optimizatio.. yun905.tistory.com Lecture 3에서도 다루었듯이 image의 raw pixels를 바로 linear classifier에 넣는 것은 좋은 생각은 아니었다. 이런 feature extraction 방법을 통해 얻은 feature를 neural network에 넣..
R CNN(Rich feature hierarchies for accurate object detection and semantic segmentation) Object detection의 history에 감을 잡기 위해 손을 댄 논문이다. 이후에 r cnn을 개선해서 좋은 결과를 얻은 논문들이 많으므로 한 번은 읽어야 한다고 생각했다. Object detection은 지난 몇 년간 정체되어 있던 분야인데, r cnn이 VOC 2012에서 기존 방법들을 30% 이상 나은 성능으로 압도했다. Contribution -Object detection에도 딥러닝을 적용하면 잘 된다는 것을 보여줬다. -Data가 부족한 경우에 모델을 pre-training 한 후 사용할 domain에 맞게 fine tuning하는 방식을 선보였다. Input 이미지를 여러 개의 bounding box로 쪼갠다. 2000개의 region proposals를 CNN에 넣고 feature..
CS231N Spring 2020 Assignment1 : Two Layer Net 간단한 값들을 가지고 우선 모델의 순전파와 역전파를 구현할 것이다. 이 부분을 implement 하면 된다. 순전파야 단순히 output을 다음 layer의 input으로 주는 구조이므로 어려울 것이 없고, 역전파도 softmax 과제를 잘 했다면 비슷한 방식으로 쉽게 할 수 있다. yun905.tistory.com/11 를 참고하자. 다만 한 가지 다른 부분은 이전 과제에서는 bias trick을 사용해 W에 bias를 끼워넣어서 따로 역전파를 계산해 주지 않아도 되었는데, 여기서는 b가 따로 떨어져 있으므로 계산을 해주어야 한다. Bias는 각 class별로 1개씩 존재하므로 shape이 score(L2).shape[1]과 같을 것이다. 이런 하나의 bias가 X.shape[0]개의 data에 대해 ..