본문 바로가기

전체보기198

Visual Studio -error LNK2038: '_MSC_VER'에 대해 불일치가 검색되었습니다. '1600' 값이 '1700'(File.obj에 위치) 값과 일치하지 않습니다.Visual Studio 2012에서 컴파일된 라이브러리는 Visual Studio 2010 에서 참조할 수 없다.따라서 재컴파일을 하거나 또는 버전이 맞는 개발환경을 설정해야 한다 - 프로젝트 참조 설정에서, 상대 경로 디렉토리 지정 방법$(ProjectDir)..\을 이용하면, 프로젝트 파일 하위 경로에 대해 상대경로로 참조 가능하다. - 인텔리센스(IntelliSense) 저장 경로 바꾸기인텔리 센스 : 컨트롤+스페이스를 누르면 자동완성이 되는데 그러한 기능을 제공하기 위한 데이터베이스그러나 프로젝트 폴더내에 위치하게 되면 큰 용량을 차지하여.. 2014. 11. 24.
CUDA Programming 인터넷 강의 : https://www.youtube.com/watch?v=m0nhePeHwFs&list=PLKK11Ligqititws0ZOoGk3SW-TZCar4dK Kernel : CPU가 GPU에게 큰 load의 작업을 병렬수행하도록 시키는 코드 이것을 만드는 것이 바로 쿠다 프로그래밍이고 gpgpu이다.함수 종류 지정(함수의 이름 앞에 다음을 선언하여 실행 방식을 결정한다.)__global__ : cpu(host)가 요청하여, gpu(device)에서 실행하는 함수 (쿠다 프로그래밍에서 가장 많이 쓰이는 핵심 함수이다.)__device__ : gpu가 요청하여, gpu에서 실행하는 함수__host__ : cpu가 요청하여, cpu가 실행. 일반적인 C++함수로 생략 가능하다. GPU는 시스템메모리 즉.. 2014. 11. 17.
Digital Signal Processing, Parallelization 과거에는 신호처리를 아날로그 방식(하드웨어에서 처리)으로 많이 했었으나, 하드웨어의 발달로 빠르고 자유로운 프로그래밍이 가능한 디지털 방식이 선호되고 있다.물론 디지털 방식은 아날로그 방식에 비해 속도가 느리므로, 아직도 성능이 중요한 부분은 아날로그 방식을 사용하고 있다. 즉 기술이 발달될 수록 기존 기술은 디지털화가 되고, 성능이 중요한 새로 개발된 기술은 아날로그가 담당하게 된다.Embeded System이란 단일 목적으로 개발된 (일종의 아날로그) 하드웨어이다. 아날로그 방식 : 상대적으로 저전력, 저비용에 고성능이다. 그러나 한번 완성된 제품은 수정이 불가능하고 개발 기간이 매우 길고, 단일 목적만 가능하다.디지털 방식 : 상대적으로 고전력, 고비용에 저성능이나 반대로 수정이 언제든지 가능하며 .. 2014. 11. 17.
Kernel Density Estimation, Gaussian Mixture Model 비 모수적 방법 (Non-parametric method) : Model의 구체적인 스펙을 정하지 않고, 데이터에 따라 저절로 정해지도록 하는 방법 Kernel Density Estimation : N개의 데이터가 주어졌을 때, 각각의 데이터를 평균으로하는 N 개의 가우시안 분포를 가정한다. 이때 가우시안의 분산은 임의로 정한다.(그래도 가장 중요한 평균은 데이터에 맡기므로 non-parametric에 해당함) 그리고 N개의 가우시안을 모두 더하여 다음과 같은 Model을 만든다. 가우시안 믹스쳐 모델 (Gaussian Mixture Model) : 가우시안 믹스쳐 모델도 가우시안을 기본으로 모델링을 한다는 점은 같지만, 가우시안의 개수를 직접 지정해주기 때문에 parametric 에 해당한다. 이 모델.. 2014. 10. 30.
Bayes Error 베이즈 에러 (Bayes Error) : Training data를 완벽히 학습하였을 때(즉, 그 사건의 underlying density function 을 알고 있을 때), 그 Training data에 대해 가장 확률이 높은 Class Label을 선택하는 방법에서 발생하는 이론적 최소 오차. min[P(y1|x), P(y2|x)] : 확률이 가장 큰 y를 선택 했을 때 발생하는 오차 값 P(x,y) : x와 y의 joint probability(결합 확률), x와 y가 동시에 일어날 확률. 즉 말 그대로 x,y 사건이 일어날 확률 (이때 y는 summation rule에 의해 시그마가 사라지며, P(x)로 바뀐다.) 따라서 해석을 하자면 베이즈 에러는 오차 값*확률=오차의 평균 을 계산한 것이다... 2014. 10. 27.
안드로이드 Thread 사용하기 1) 어떤 클래스의 내부 클래스로 원하는 스레드를 만든다. class CaptureThread extends Thread{ int counter = 0; boolean running = true; void stopRunning(){ running = false; }@Overridepublic void run() {super.run();while(running){try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}counter++; mCamera.startPreview(); mCamera.takePicture(null, null, jpegCallBack); .. 2014. 10. 5.
Polynomial Regression, Non-Linear Features 변수들이 선형적인 관계만을 갖는 Linear Regression 의 경우 모델링이 극히 단순하고 학습이 쉽다.그러나 변수들이 비선형적인, 예를 들어 서로 곱샘이나 제곱 등의 관계를 갖는 경우 다소 어려운 모델링이 필요하다. Ex) 집의 가격 = f(면적, 도로와의 거리, 층 수) Ex) 배란다의 면적 = f(집의 가로, 세로 길이,층 수) Ex) 키 = f(유전적 요소(부모의 키), 환경적 요소(영양공급상태)) 이러한 비선형적 문제는 Neural Network 중 가장 간단한 Multi-Layer Perceptron 만 사용하여도 충분히 쉽게 풀린다. 왜냐하면 Neural Network 는 충분한 Hidden Node를 가질 때, 그 어떤 함수도 근사시킬 수 있는 Universial Function Ap.. 2014. 10. 3.
Information Theory, Distance Metric of PDF 1.Information Theory (=Shannon's Information Theory) 정보량에 대해 기술하기 위한 이론으로 엔트로피를 핵심 개념으로 사용하며, 기계학습을 비롯해 셀 수없이 방대한 분야에서 활용되고 있다.Shannon's Bits : Information의 양(정보량)을 나타내기 위해 샤논은 bit를 사용하였다. 먼저 정보량을 다음과 같이 정의한다.확률 p인 사건의 정보량 = 1/p 를 나타내는데 필요한 bit의 개수 = log_2(1/p)즉 정보량의 정의는 log_2(1/p)인 것이다. 이에 따라 확률(o)가 낮은 사건일수록 그값을 표현하는 데 bit가 더 많이 필요하게 된다. 즉 낮은 확률의 사건일 수록 정보량이 더 큰 것이다. http://en.wikipedia.org/wik.. 2014. 9. 29.
표본의 분산 표본의 분산을 구할 때 N이 아닌 N-1로 나누는 이유는 다음에서 매우 직관적으로 설명되어 있다. (정확한 이유는 자유도가 N-1이기 때문이다.) - 출처 지식in표본분산을 구할때 n-1로 나누는 이유를 질문하신게 맞지요?모집단의 분산을 구할때는 n으로 나눠주지만,표본분산을 구할때는 자유도로 나눠줍니다. 자유도란 말그대로자유롭게 값을 가질수 있는 수인데요~예를들어서 설명해 드리겠습니다. A, B, C 세 사람이 있습니다.세 사람의 키의 평균은 180이라는 것을 알고 있습니다.그리고 A의 키는 170, B의 키는 190이라는 것을 알고있다면C의 키는 몇일까요?평균이 180이었으므로 당연 180이 되겠지요?이렇게 평균의 값을 알고있게 됨으로써 C의 키는 180으로 고정됩니다.다시말해 A와 B의 키가 어떻게 .. 2014. 8. 14.
Generative Model, Discriminant Model Generative Model : Bootstrapping이 가능한 모델이라고 생각하면 됨. 즉 학습한 input 데이터의 분포를 따르는 데이터를 생성해낼 수 있다. 즉 input과 속성이 동일한, 새로운 input2 데이터를 만들 수 있다. - PGM(MRF, BN 이 해당됨) Discriminant Model : 재생성이 불가능하고 오직 분류만 가능하다. -SVM, DNN------ 탐미첼 책에서 든 예시(Naive-Bayes 와 Logistic Regression의 분류에서의 비교. 둘다 거의 비슷한 방식인데 하나는 Generative, 하나는 Discriminant 임)Generative Model은 데이터가 작을 때 유리하고,(간단히 생각해보면 Resampling을 통해 데이터를 더 많이 취하는.. 2014. 8. 12.
확률 법칙, The Rules of Probability. sum rule과 product rule은 연속확률 변수에대해서도 똑같이 사용 가능하다.(시그마 대신 적분을 사용) 위의 두 공식으로부터 유도되는, 또 다른 아주 자주 쓰이는 공식 (sum rule에 product rule을 대입하면 유도됨.) Conditional Probability , P(A|B)에서 자주 헷갈리는 모든 경우를 더해서 1이되는 개념.앞에있는 확률 변수 A가 실제로 계산되어지는 확률변수이다. given B는 그냥 단순히 조건일 뿐, P(A|B)는 A에대한 확률이다.따라서 더해서 1이 되는 것은 given이 같을때, 앞의 확률변수의 모든 경우를 더했을 때 1이 되는 것이다. (모든 given을 더해서 1이 되는 것으로 종종 헷갈림) 2014. 8. 11.
테일러 급수, 푸리에 급수 - 다항함수 : y=1+x^2과 같은 다항식만으로 표현 가능한 함수- 초월함수 : 로그함수, 지수함수, 사인함수와 같이 다항식으로는 표현할 수 없는 함수 - 테일러 급수의 의미 : 초월함수를 다항함수로의 근사한다. - 테일러 급수의 직관적 이해여기서는 엄밀한 증명이나 정의보다는 테일러 급수를 거꾸로 분석해 최대한 직관적으로 이해해보고자 한다. 우선 테일러 급수는 작은 구간에 한하여, 초월함수를 다항함수로써 근사시키는 것이다. (다항식으로 근사하는 이유는 수식의 계산이 엄청나게 쉽고 편해지기 때문이다) 이때 테일러 급수에 왜 미분계수가 사용 될까?x=a 지점에서의 초월함수가 근방의 좁은 구간에서 어떤 임의의 다항함수 g(x)와 같다고 가정해보자.그럼 이때 다항함수는 g(x) = C1 + C2*x + C3*.. 2014. 8. 10.
Weight Decay, Regularization, Overfitting, Validation set, Drop out, ReLU Overftting : 뉴럴 네트워크를 학습하다보면, 오버피팅이 쉽게 일어난다.오버피팅은 training set을 너무 많이 학습해서, training set에대한 error는 매우 줄어들지만, 문제에대한 일반성이 떨어져서 test set 또는 validation set(오버피팅 여부를 확인하기위해 error를 측정하기위한 데이터 셋으로, test set도 아니고 training set도 아닌 데이터)에대한 error가 증가하는 것을 의미한다. Regularization : 이러한 현상은 weight가 처음에는 매우 작게 세팅되어 있다가, 점점 커지는 것과 비례해서 오버피팅이 일어나는 것으로 해석된다.따라서 이것을 막기위해 weight decay(=regularization) 을 사용한다.이것은 Erro.. 2014. 8. 4.
Deep Belief Network DBN : 보통 MLP에서 Hidden Layer의 개수가 1개보다 큰 경우 Deep이란 말을 쓰는 것 같다. MLP에서 Deep한 뉴럴넷을 학습시키기위해 BackPropagation 이 개발되었으나, Hidden Layer의 개수가 많아질 수록 아래쪽 Layer까지 제대로 error를 전파시키지 못하는 문제가 생겼다.그래서 이를 해결하기위해 2006, Hinton 이 만든 DBN은 RBM을 이용해서 MLP의 Weight를 input 데이터들만을 보고(unsuperivesd로) Pretraining 시켜서 학습이 잘 일어날 수 있는 초기 세팅을 하는 방법을 고안하였다. (기존에는 초기조건으로 그냥 0~0.1 사이의 weight를 랜덤으로 주었음.)RBM은 두 레이어가 서로를 좀 더 잘 표현할 수 있는 방.. 2014. 8. 1.
RBM, Contrastive Divergence http://deepcumen.com/2015/04/restricted-boltzmann-machine/#comment-437http://147.46.219.139:8889/tree/DeepLearningTutorials/code RBM 학습 알고리즘 다시 정리 :cost = T.mean(self.free_energy(self.input)) - T.mean(self.free_energy(chain_end))이 cost function을 최소화하는 gradient descent를 수행한다. 이 cost function은 (input데이터에 대한 free energy)-(input데이터로 k번 왔다갔다하면서 gibbs 샘플링한 V노드의 데이터의 free energy)이다. 이 둘이 최대한 같아지도록 grad.. 2014. 7. 23.
MCMC, Metropolis-Hastings, Gibbs Sampling Markov Assumption(=Markov Property) : 직전 사건에의해서만 현재 사건이 영향을 받는 속성Chain : discrete한 Time Sequence 사건Markov Chain : Markov Assumption 을 만족하는 ChainMonte Carlo Method : 다음과 같이 여러개의 표본을 추출해서 전체적인 분포를 파악하는 방법론 Sampling : 해당 모델을 만족하는 데이터를 생성, 추출해내는 것. 단 그 모델의 확률 분포에 비례하여 확률 밀도가 높은 곳에서 그에비례하게 더 많은 데이터가 나오도록 추출해야 한다. Markov Chain Monte Carlo : Markov Chain에서 샘플링을 하기위해 Monte Carlo Method를 써서 확률 분포가 반영된 데이.. 2014. 7. 22.
P, NP, NP-Complete, NP-Hard, 시간 복잡도 # 3단계 문제 난이도P: 폴리노미얼 타임으로 정답을 구할 수 있는 문제 NP: 임의의 값 1가지에 대해 정답인지 아닌지만 폴리노미얼로 계산할 수 있는 문제. NP를 풀려면 서치나 샘플링등의 계산적인 접근을 해야한다. NP-Hard: NP보다 조금이라도 무조건 더 어려운 문제. 얘는 계산적인 방법으로도 풀기힘든 문제이다. # NP-complete의 특수한 성질어떤 NP가 다른 NP로 컨버팅이 될때, 그 컨버팅 타겟문제를 지칭하는 말이다. 이녀석들 덕분에 P=NP 라는게 증명되면 왠만한문제가 다풀리는것이다.https://www.quora.com/What-does-NP-hard-mean P : 어떤 문제의 해답을 빠른 시간(=다항 함수)안에 찾을 수 있는 문제.다항 함수 : 한 변수의 곱셈과 덧셈으로만 이루.. 2014. 7. 22.
[NeuroScience] New born neurons 사이언티픽 아메리칸에 올라온 글.간단히 요약하면, 뉴런은 성인이 되어서도 계속해서 새로 생겨나며, 이 새로 생겨난 뉴런은 기존의 뉴런들에대해 억제 시그널을 생성해 새로운 환경에대한 패턴 인식을 더 잘하게끔 도와준다.관련해서 불안 장애 또한 새로운 환경과 위험한 환경을 잘 구분하지 못해서 생기는 것이며, 이것을 새로 태어난 뉴런들이 죽지않게끔 유도해 해결할 수 있을 것이라고 제안한다. 2014. 7. 22.
RESTFUL API 철학 : HTTP 헤더에 이미 필요한 기능들이 다 포함되어있으니까, HTTP 헤더를 최대한 사용하자. 기존에는 표준으로 정해진 웹 통신 규약이 없었다. 이를 표준화 시키기위한 시도가 바로 REST API.REST API 는 엄격한 규약이 아니고, 개발 방법론이자 개발 철학이다. 규칙들1. Stateless, 인증에 있어서 세션과 쿠기를 쓰지 않는다. 대신에 토큰을 사용한다.2. Cacheable, 원래의 http처럼 캐쉬를 쓸 수 있다.3. Client-Server, 클라이언트 서버 모델4. Layered System, 분산 서버를 사용. 세션을 쓰면 이부분을 구현하기가 힘듬(ex)페이스북 서드파티 로그인 같은것을 구현해내기 어려움) 그래서 토큰이 중요하다.5. Code on Demand(선택적), 다양.. 2014. 7. 22.
Dimension Reduction, Curse Of High Dimensionality 고차원의 저주 (Curse Of High Dimensionality) : 고차원에서는 다음과 같은 현상이 일어나 기계학습에서 여러 문제가 발생한다.1) 차원이 무한으로 갈 수록 임의의 두 점간의 거리가 무한대로 발산한다. 그러므로 당연히 임의의 두점에 대한 거리의 비가 1로 수렴한다.(즉 임의의 점 4개를 뽑고, 2점들 간의 거리의 비가 1로 수렴한다) 2) 데이터의 instance가 고차원의 공간에서는 보다 희소(Sparse)해진다. 따라서 특정한 차원(Feature)를 충분히 설명할 수 없어지고, 부족한 데이터는 곧 모델의 Generalization Ability를 약화시켜 Overfitting이 일어난다. 차원 축소 (Dimension Reduction) :차원 축소는 고차원의 저주를 비롯해 여러가.. 2014. 7. 18.