Conditional Random Field(CRF)

패턴인식 & 기계학습 2015. 10. 8. 00:32

Conditional Random Field(CRF) 란?


 만약에 우리가 어떤 여행지에 가서 여행한 순서에 따라 사진을 찍었다고 가정해보자. 집에 돌아와서 여행중 찍었던 사진을 정리하려고 하니 하나하나 분류하기가 매우 귀찮다. 따라서 분류기를 만들어 행동을 보고 각각의 행동(먹다, 노래부르다.. 등) 기준으로 사진을 분류하고자 한다. 예를 들면 오전 6시는 아침이라 어두우니 자고있다로 분류하고, 자동차 이미지가 있으면 운전하다로 분류, 입에 무엇을 가져다 대면 먹다로 분류하는 기준을 세웠다. 하지만 잘 분류 될것 처럼 보이지만, 엄청난 문제가 존재한다. 만약 아래 사진과 같이 어떤 사람이 입에 가까이 무엇을 대고 있으면 분류기 기준에 따라 먹다로 분류되기도 하고 어떻게 보면 노래하는 것 처럼 보이기도 할 것이다.



이러한 문제를 어떻게 해결할 수 있을까? 한가지 좋은 방법은 사진을 찍었을때의 sequence를 잘 보고 식당에 있고 손으로 입에 무엇을 가져다 대면 먹다로 분류하고, 주위가 어둡고 입에 무엇인가를 가져다 대면 노래하다로 분류하면 위 문제를 어느정도 해결할 수 있지 않을까? 이렇게 하나의 sequence를 보고 판단하는 것이 아니라 사진을 찍었던 순간 이전 혹은 이후를 참조해 지금 상태를 결정하는 것을 Conditional Random Field(CRF)라고 한다.


참조 : http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/

Automatically image Description(Auto Caption)

패턴인식 & 기계학습 2015. 10. 6. 20:11

1. Deep Learning의 등장

 2010년대 초반 딥러닝(Deep Learning)의 문제점 및 한계를 극복해 여러 인공지능의 분야에 적용하면서 전체적인 성능 및 인식률이 매우 상승했다. 그 중 가장 획기적인 아이디어 중 하나인 방법으로 사람이 아닌 컴퓨터가 스스로 이미지를 보고 이미지를 표현(representation)하는 것이다. 이 것은 Language translation의 분야중 하나였지만, Deep Learning을 이용하여 이미지의 인식(recognition)성능이 많이 상승하여 이미지와 번역(translation)을 결합하여 컴퓨터 스스로 이미지를 보고 영상을 분석할 수 있게 되었다. 





2. Auto Caption(Automatically Image Description)

 Language Expression이 가능해 진 이후로 Deep Learning과 여러 모델을 결합하여 이미지의 표현(Image Representation)을 정확히 해내는 여러 대회(ImageNet, Microsoft COCO 등..) 에서 어느 모델이 더 이미지를 언어로 표현을 잘 하는지?(이미지를 보고 문장을 만들어 냈을때 오류가 없는)를 측정하여 순위를 매겨 수상하는 대회를 매년 진행하고 있다. 아래 그림은 최근 Microsoft에서 주최하는 Image Caption대회의 결과를 보여준다. 사람의 표현 능력과 각 기업, 연구소, 연구실에서 개발한 모듈 별로 얼마나 표현을 잘 하는지를 나타낸 순위이다. 모든 모델이 어떻게 설계되었고 어떻게 문장(언어)를 표현하는지는 아직 밝혀져 있지는 않지만 여러 논문에서 소개하는 방법을 간단히 설명하고자 한다.


Fig1. Microsoft COCO Captioning Challenge[1]



3. Show and Tell : A Neural Image Caption Generator [2]

 2014년 Google에서 발표한 Show and Tell 이라는 논문에서 소개된 방법은 영상인식을 위해 CNN모듈과 RNN(LSTM)을 결합한 모듈로 Auto Caption하는 방법을 소개한 논문이다. 


Fig2. Show and Tell Auto caption Model[2]


 CNN 모듈로는 GoogLeNet[3]을 기반으로 Batch Normalization을 적용한 모델[4]을 사용하였다. Batch Normalization을 기존 GoogLeNet에 적용하여 Inception Module을 수정하여 기존 에러률(error rate) 6.7%보다 (ImageNet Class Top-5 error 4.9%)을 보인 정확한 이미지 표현이 가능한 모듈(Fig3.Left)을 사용한뒤, Language Presentation모듈로는 LSTM(Long Short Term Memory) Fig3.Right을 적용하여 하였다.


Fig3. (Left) CNN & LSTM 모델 결합, (Right) LSTM [2]



4. From Captions to Visual Concepts and Back [5]

 Multiple Instance Learning을 통하여 Auto Caption 을 수행하는 논문으로 총 3단계의 표현 과정을 거친다. 첫번째로 이미지 내에서 표현 가능한 단어를 각각 추출 한뒤, 각각의 표현된 단어로 문장을 구성한다. 구성된 문장을 re-rank과정을 통해 최종적으로 문장 하나를 선택해 표현하는 순서로 알고리즘이 구성되어 있다.


Fig4. Caption Generate Pipeline[3]


 위 모델의 특징으로는 이미지 부분(region)을 기반으로 각각의 Object에 대한 정보를 추출했을때, Open혹은 Beautiful 같은 형용사의 뜻을 가진 단어는 표현하기 힘든 문제로 이미지 부분이 아닌 전체를 기반으로 Object에 대한 정보를 추출하였고, 기존 CNN들과는 다르게 Convolutional Neural Network 과정에 포함된 Fully Connected Layer(7~8 Layer)에 Image의 region 정보와 word correspond정보, image 정보를 전파 할수 있도록 Layer를 수정하여 이미지 내부에 Logistic Function을 추가하여 이미지 위치 정보와 word를 표현이 동시에 가능하도록 표현하는 모델을 제안하였다. Language Representation 표현된 단어 정보로 caption을 generation하기 위해 Maximum entropy(ME) Language Model(LM)을 이용하여 지금 상태(condition)에서 확률적으로 모든 단어를 계산한 뒤, 높은 likelihood를 detection하여 각각의 단어를 연결하는 방법을 사용하였다.



Reference


[1] http://mscoco.org/dataset/#captions-leaderboard

[2] Vinyals, Oriol, et al. "Show and tell: A neural image caption generator." arXiv preprint arXiv:1411.4555 (2014).

[3] Szegedy, Christian, et al. "Going deeper with convolutions." arXiv preprint arXiv:1409.4842 (2014).

[4] Ioffe, Sergey, and Christian Szegedy. "Batch normalization: Accelerating deep network training by reducing internal covariate shift." arXiv preprint arXiv:1502.03167 (2015).

[5] Fang, Hao, et al. "From captions to visual concepts and back." arXiv preprint arXiv:1411.4952 (2014).

[6] Caffe Model Zoo : https://github.com/BVLC/caffe/wiki/Model-Zoo


'패턴인식 & 기계학습' 카테고리의 다른 글

Conditional Random Field(CRF)  (3) 2015.10.08
Jaccard similarity 계산  (0) 2015.10.02
Deep Learning 두번째 세미나  (0) 2015.09.29
딥러닝 framework Theano 설치  (0) 2015.09.21
에이다부스트(adaboost)  (0) 2015.02.27

Jaccard similarity 계산

패턴인식 & 기계학습 2015. 10. 2. 15:19

Jaccard Semilarity 계산


Jaccard Index는 Paul Jaccard이 제안한 유사성 계산 알고리즘이다.


기본적으로 Jaccard similarity measure방법은 두 데이터 집합의 교집합을 합집합으로 나눈것으로 정의한다.



  



Jaccard Distance는 1에서 Jaccard Similarity를 뺀값으로 계산하거나, 합집합에서 교집합을 뺀 크기를 


합집합의 크기로 나눈 것으로 계산할 수 있다.




Jaccard Distance의 값은 0~1사이의 값을 갖고 A와 B가 empty일 경우 1의 값을 갖는다.


보통 binary attributes의 similarity를 계산할때 많이 사용된다. (위키피디아 참조 - Jaccard_index)



Deep Learning 두번째 세미나

패턴인식 & 기계학습 2015. 9. 29. 00:16

'패턴인식 & 기계학습' 카테고리의 다른 글

Automatically image Description(Auto Caption)  (0) 2015.10.06
Jaccard similarity 계산  (0) 2015.10.02
딥러닝 framework Theano 설치  (0) 2015.09.21
에이다부스트(adaboost)  (0) 2015.02.27
k-means clustering  (0) 2015.02.27

딥러닝 framework Theano 설치

패턴인식 & 기계학습 2015. 9. 21. 21:35

reference : http://deeplearning.net/software/theano/install_ubuntu.html#install-ubuntu


For Ubuntu 11.10 through 14.04:

sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git
sudo pip install Theano



If you would like, instead, to install the bleeding edge Theano (from github) such that you can edit and contribute to Theano, replace the pip install Theano command with:

git clone git://github.com/Theano/Theano.git
cd Theano
python setup.py develop --user
cd ..


Updating Theano

If you followed these installation instructions, you can execute this command to update only Theano:

sudo pip install --upgrade --no-deps theano

If you want to also installed NumPy/SciPy with pip instead of the system package, you can run this:

sudo pip install --upgrade theano


'패턴인식 & 기계학습' 카테고리의 다른 글

Jaccard similarity 계산  (0) 2015.10.02
Deep Learning 두번째 세미나  (0) 2015.09.29
에이다부스트(adaboost)  (0) 2015.02.27
k-means clustering  (0) 2015.02.27
딥러닝 Deep Learning  (0) 2015.02.27

에이다부스트(adaboost)

패턴인식 & 기계학습 2015. 2. 27. 18:37

'패턴인식 & 기계학습' 카테고리의 다른 글

Deep Learning 두번째 세미나  (0) 2015.09.29
딥러닝 framework Theano 설치  (0) 2015.09.21
k-means clustering  (0) 2015.02.27
딥러닝 Deep Learning  (0) 2015.02.27
SVM(Support Vector Machine)  (0) 2014.11.04

k-means clustering

패턴인식 & 기계학습 2015. 2. 27. 18:36

'패턴인식 & 기계학습' 카테고리의 다른 글

딥러닝 framework Theano 설치  (0) 2015.09.21
에이다부스트(adaboost)  (0) 2015.02.27
딥러닝 Deep Learning  (0) 2015.02.27
SVM(Support Vector Machine)  (0) 2014.11.04
Heap theory(헵 이론)  (0) 2014.11.04

딥러닝 Deep Learning

패턴인식 & 기계학습 2015. 2. 27. 18:34

'패턴인식 & 기계학습' 카테고리의 다른 글

에이다부스트(adaboost)  (0) 2015.02.27
k-means clustering  (0) 2015.02.27
SVM(Support Vector Machine)  (0) 2014.11.04
Heap theory(헵 이론)  (0) 2014.11.04
신경망 이론  (0) 2014.11.04

SVM(Support Vector Machine)

패턴인식 & 기계학습 2014. 11. 4. 20:11

SVM(Support Vector Machine)에 대해 알아보자.

이전에는 신경망을 통해 2차원 데이터 셋을 분류해본 적이 있다. (신경망 참조)

[그림 1]을 보면 신경망 모델의 한계를 볼수 있다. 1번을 초기로 설정한뒤 점차 오류를 줄여가는 과정에서

2번에 도달하였을 경우 신경망은 오류함수가 0을 가지게 되므로 종료한다. 하지만 3번의 경우가 2번의 경우보다

더 데이터를 더 잘 분류한 경우가 될 것이다.


   [그림 1] 신경망 모델의 한계


학습의 입장에서 보면 2번과 3번 모두 데이터를 잘 분류한 결과가 되지만, 만약에 데이터가 새로 들어올 가능성을

고려한다면 2번의 경우 오류가 생길수 있는 확률이 3번의 경우보다 높다. 분류기 성능으로 본다면 3번의 경우가

좀더 잘 분류된 경우가 될 것이다.


이처럼 SVM은 오류를 최소화 하여 분류하는 것으로 부터 한발짝 더 나아가 분류된 데이터 셋을 고려해

여백(margin)을 최대화 하여 일반화 능력을 극대화 시키는 것을 말한다. 즉, SVM은 최대 여백을 구한다.

첫번째 선형적으로 데이터를 분류할 경우를 고려해 선형 SVM에 대해 정리한다.


1. 선형 SVM

[그림 1]과 같이 이진 분류를 결정하는 초평면 식은 다음과 같이 표현할 수 있다.



[그림 2]를 보면 w가 고정되있을때, b의 값에 따라 직선의 위치가 변화하는것을 관찰할 수 있다.



  [그림 2] w와 b에 따른 분류기의 위치 변화


속이 찬 샘플들(직선에 가까운 것들)은 서포트 벡터(support vector)라고 부른다. 이 벡터들은 직선의 위치에 

직접적인 영향을 끼친다. 결정 직선에서 서포트 벡터 x까지 거리가 1(즉, |d(x)|=1)이 되도록 적당히 크기 조절을

하면 여백을 다음과 같이 쓸 수 있다.



모든 샘플들의 집합을 올바르게 분류한다는 가정 하에 최대 여백을 갖는 초평면(Hyperplane)을 찾으면 된다.



[식2]를 만족하며 [식3]을 최소화 하는 w를 찾으면 된다. 다르게 보면 조건부 최적화 문제이다.

보통 조건부 최적화 문제는 라그랑주 승수(Lagrange multiplier)를 도입하여 해결한다.

(조건부 최적화 : 조건이 정해진 상태에서 최대, 최소를 구하는 문제)

라그랑주 승수법이 잘 정리된 곳을 있어 소개한다. [http://kipid.tistory.com/50#secId1-1]


[식 3]을 라그랑주 함수 L(..)로 표현하면 [식 4]와 같다. 이때 조건식 마다 라그랑주 승수 αi를 부여하였다.



함수 L을 매개변수 w와 b로 미분한 후 그것을 0으로 놓고 KKT(Karush-kuhn-Tucker)조건식을 유도한뒤

그 결과를 Wolfe 듀얼 문제로 변형하면 [식 5]를 얻는다.



즉, [식 5]를 최대화 하는 문제로 바뀐다. [식 5]를 보면 w와 b가 사라졌음을 볼 수 있다.

따라서 w와 b를 구하는 문제가 아니라 라그랑주 승수 α를 구하는 문제가 되었다. 라그랑주 승수를 구하면

그것으로 w와 b를 구하면 된다. 또한 특징 벡터 xi가 혼자 나타나지 않고 두 개의 특징 벡터의 내적인

xi·xj로 나타난다. 


참조 : 컴퓨터비전(오일석)

'패턴인식 & 기계학습' 카테고리의 다른 글

k-means clustering  (0) 2015.02.27
딥러닝 Deep Learning  (0) 2015.02.27
Heap theory(헵 이론)  (0) 2014.11.04
신경망 이론  (0) 2014.11.04
Boltzmann machine(볼츠만 머신)  (0) 2014.11.04

Heap theory(헵 이론)

패턴인식 & 기계학습 2014. 11. 4. 18:00

1949년 캐나다의 심리학자인 Donald Hebb 은 그의 저서인 'The Organization of Behavior' 에서 '헵의 시냅스'라고 알려진 시냅스의 연결강도 조정을 위한 생리학적 학습 규칙을 기술했는데 이 책은 1949년경의 신경심리학에 대해 폭넓고 깊이있게 기술하고 있다. 그는 이 책의 도입 부분에서 복잡한 두뇌 모델링에 대해 '커넥셔니즘(connectionism)'이란 말을 처음으로 사용하였다 .......... "우리는 어떻게 학습하는가?"에 대한 비교적 간단한 학습이론에 대하여 살펴보자. 중심적인 아이디어는 다음과 같다 .........  두 개의 뉴런 A, B 가 서로 반복적이고 지속적으로 점화(firing)하여 어느 한쪽 또는 양쪽 모두에 어떤 변화를 야기한다면 상호간의 점화의 효율 (weight) 은 점점 커지게 된다. ............ 헵의 학습 규칙은 나중에 개발된 다른 신경망 모델들의 학습 규칙의 토대가 된다 .

Hebb 학습법은 1949 년에 D. Hebb 이 처음 제안하였고, 1988 년 T. McClelland 와 D. Rumelhart 에 의해 확장된 학습 방법으로 순방향 신경망에만 적용될 수 있으며, 이진 또는 연속 활성화 함수가 사용될 수 있다. 초기 연결 강도는 모두 0 에 가까운 작은 값으로 하며, 학습 신호로서 출력을 사용하는 점이 특징이다...........

Hebb의 학습 가설에 근거한 Hebbian 학습 규칙은 가장 오래되고 단순한 형태의 학습 규칙이다. 이 규칙은 만약 연접(synapse) 양쪽의 뉴런이 동시에 또 반복적으로 활성화되었다면 그 두 뉴런 사이의 연결강도가 강화된다는 관찰에 근거한다. 수학적으로는 다음 식으로 나타낼 수 있다.



여기서 xi와 yj는 뉴런 i와 j의 출력이고, 이들은 연접 wij에 의해 연결된다. η는 학습률이다. 또 xi는 연접 wij의 입력도 된다. 연접의 변화가 인접한 두 뉴런의 상태에 의해서만 결정되기 때문에 학습은 국부적으로 일어난다.


출처 : http://www.aistudy.com/neural/hebbian_learning.htm

'패턴인식 & 기계학습' 카테고리의 다른 글

딥러닝 Deep Learning  (0) 2015.02.27
SVM(Support Vector Machine)  (0) 2014.11.04
신경망 이론  (0) 2014.11.04
Boltzmann machine(볼츠만 머신)  (0) 2014.11.04
결정 트리 분기  (0) 2014.10.25