목록ML & DL (42)
로지스틱 회귀를 이용하여 Multi-class classification 문제를 푸는 방법을 알아본다. 멀티클래스 분류는 클래스가 여러 개인 문제를 분류하는 것이다. 이메일을 종류별로 분류하는 것 환자를 진단하는 것 그리고 날씨를 4개의 경우 중 하나로 분류하는 것 등이 있다. Y의 클래스 값을 0으로 시작하든 1로 시작하든 상관 없다. Binary classification에서 이렇게 직선을 그어 클래스를 구분하였다. 멀티클래스 분류에서도 이와 같은 방법을 이용한다. 3개의 클래스를 가지는 데이터셋을 분류하기 위해 이 문제를 binary classification 문제로 전환할 것이다. 먼저 삼각형 class1을 양성이라 하고 나머지 데이터는 모두 음성으로 취급한다. 그러면 오른쪽 위의 그림처럼 bin..
로지스틱 회귀에서 파라미터를 fitting 시키기 위한 Cost function 정의에 대해 알아본다. 트레이닝 셋이 m개 있고 n개의 feature가 있다면 feature 벡터 x는 n+1차원의 벡터가 된다. 계속 언급하는 부분이지만 x_0=1이다. 일단 이진분류만 할 것이기 때문에 y는 0 또는 1이된다. 로지스틱 회귀에서의 가설 h(x)는 위와 같이 정의하였다. 그러면 적절한 파라미터 θ를 어떻게 찾을 수 있을까? 선형회귀에서 비용함수 J를 이렇게 정의하였다. (1/2을 시그마 안으로 넣은 것 뿐이다.) 선으로 그은 부분을 간단하게 cost(h(x), y)라고 하자. 그러면 cost(h(x), y)는 오차제곱에 1/2을 곱한 값이 된다. (눈에 잘 들어오기 위해 위의 첨자를 일부러 지운 것임) 선형..
분류 문제를 풀기 위한 Logistic Regression 알고리즘에 대해 알아본다. 이메일이 스팸인지 아닌지, 온라인 거래 시 사기인지 아닌지, 종양이 악성인지 아닌지 등 0 또는 1처럼 둘 중 하나의 값을 가지는 변수 y를 예측하는 문제는 classification으로 푸는 문제이다. 우선은 binary classification만 다루도록 한다. 종양의 크기에 따라 이 종양이 악성인지 양성인지 분류하기 위한 data set이 있다. (여기선 양성은 0, 악성은 1을 의미함) 회귀문제를 풀기 위해 선형회귀 알고리즘을 사용했던 것처럼 일단 직선을 그어보자 즉 우리가 할 수 있는 건 가설 h(x)의 결과값이 0.5가 되는 지점에서 수직으로 경계선을 긋는 것이다. 그래서 그 지점보다 size가 작으면 양성..
이전에 pretrained model을 사용하되 conv layer는 프리징시키고 F.C layer만 업데이트 되도록 했더니 오버피팅이 심하게 나타났다.이번에도 사전학습된 모델을 불러오지만 conv layer도 학습이 가능하도록 수정하였다. (trainable 변수만 바꾸면 된다.)현재 파라미터들이 이미지넷 데이터셋에 최적화된 값으로 초기화되어 있으므로 다른 초기화 기법을 적용하지 않았다.F.C layer는 저번처럼 새로 이어 붙여서 학습이 가능하게 하였다. 다른 도메인이지만 이미 파라미터들이 feature를 잘 추출해내는 어떤 값으로 초기화되어 있다. 그렇다면 다른 도메인에서도 그 성능을 발휘할 수 있을까? 다시 말해, iteration을 조금만 하고도 빠르게 수렴할 수 있을까?이번에는 왠지 그럴 것 ..
특정 선형회귀 문제에서 최적의 파라미터 θ를 구하는 또 다른 알고리즘 Normal equation에 대해 알아본다. Gradient descent는 iteration을 여러 번 하여 최소값을 찾아 나가지만 Normal equation은 θ를 분석적으로 구하기 때문에 알고리즘을 반복할 필요 없이 한번에 최적값을 구할 수 있다. θ가 실수일 때, 우리는 미분을 통해 기울기가 0이 되는 지점이 cost가 최소가 되는 위치라는 걸 알 수 있다. 이와 반대로 θ가 실수가 아닌 n+1차원의 파라미터 벡터인 경우 편미분을 이용하여 각 파라미터 θ에 대해 미분을 하여 0이 되는 지점을 찾아나가면 cost function을 최소화 할 수 있다. 하지만 파라미터 벡터의 차원이 매우 큰 경우 미분을 통해 일일이 계산하면 계..
우리는 feature가 하나인 집 값 예측 문제를 다뤘다.실제로 집 값을 예측하기 위해선 여러 feature들을 고려해야 한다. 이제 feature가 여러 개인 문제를 다뤄보도록 한다. 집 값을 예측하기 위해 4개의 사이즈, 침실 수, 층 수, 지어진 기간 등의 여러 변수를 고려해보자 이러한 feature들을 x1, x2, x3, x4라는 notation을 사용하여 나타내며 예측을 해야 하는 price는 y로 둔다. Feature를 표기하는 notation에 대해 좀 더 살펴보면 N은 feature의 개수가 된다. 여기선 4개의 feature를 사용할 것이기 때문에 n=4가 된다. X의 위첨자를 사용한 x^(i)는 training sample 중에 i 번째 sample을 가리킨다는 뜻이다. 따라서 x^(..
Gradient descent는 비용함수 J의 최소값을 구하기 위한 머신러닝 알고리즘이다.이 알고리즘이 어떤 것인지 알아보자. θ0, θ1을 파라미터로 하는 비용함수 J를 생각해보자. 여기선 2개의 파라미터만 존재한다고 가정했지만 실제론 굉장히 많은 파라미터가 존재할 것이다. 비용함수 J가 다음과 같은 형태일 때 θ0, θ1이 빨간 언덕위의 한 지점에서 초기화되었다고 해보자이 지점에서 작은 보폭으로 언덕을 최대한 빠르게 내려가고자 할 때 어떤 방향으로 가는 게 가장 빠른 길일까? 일단 주위를 둘러보고 언덕을 내려가는 가장 빠른 길을 찾아 따라서 내려간다. 아래 지점으로 이동하였다. 다시 여기서 주위를 둘러보고 작은 보폭으로 가장 빠른 길을 찾아 내려간다. 이러한 방식으로 새로운 지점에서 다시 주위를 둘러..
blood cell dataset을 가지고 pre-trained vgg16 네트워크를 사용하여 classification을 해보았다.Imagenet으로 사전훈련된 vgg16의 F.C layer를 제외한 feature extraction부분의 레이어만 가져왔고 sequential model을 사용하여 새로운 classifier를 만들어 vgg에 연결하였다.학습이 진행되는 동안 기존 vgg의 weight값들은 변하지 않게 프리징시켰고 F.C layer만 학습되도록 만들었다. 나는 이제 트레이닝을 하기 전, 다음과 같은 부분을 고민해보았다. 이미지넷으로 트레이닝 된 네트워크를 사용해서, 한 번도 본 적 없는 데이터셋도 잘 분류할 수 있을까? feature extraction layer들이 blood cell이..