목록전체 글 (55)
모바일넷은 standard conv, detphwise conv, pointwise conv의 3가지 컨볼루션 레이어를 사용하며 총 28개의 레이어로 구성되어 있다 첫번째 conv layer는 일반 convolutional layer를 사용하며 모든 컨볼루션 레이어 뒤에 Batch Normalization과 ReLU가 이어진다. 그냥 논문으로 보고 구현한 네트워크랑 케라스에서 제공하는 모바일넷 모델과 비교했을 때 파라미터 수나 텐서 size 차이가 있길래 좀 더 확인해봤더니 다음과 같은 사실을 알게 되었다. 케라스에서 제공하는 모바일넷 모델은 1. 모든 convolutional layer에서 bias를 사용하지 않는다.-> Conv layer에서 use_bias 인자 값을 False로 주면 된다. 왜 b..
뉴럴넷이 어떻게 복잡한 non-linear function을 계산하는지 알아본다. 분류문제를 풀기위해 로지스틱 회귀로 non-linear decision boundary를 만들어 오른쪽과 같이 두 class를 분류하였다. XOR 혹은 XNOR도 non-linear classification 문제다. 뉴럴넷으로도 non-linear classification 문제를 풀 수 있다. 먼저 linear model로 풀 수 있는 AND 논리연산이 뉴럴넷으로 어떻게 만들어지는지 보자 Sigmoid의 input으로 들어가는 값이 x1, x2 두 변수 외에 bias unit을 고려해서 3개의 unit이 존재하며 다음 unit과 연결된 wire의 파라미터는 다음과 같다. 따라서 우리가 구하게 될 output 값 h(x)..
Depthwise separable Convolution은 Depthwise convolution과 1x1 convolution(pointwise convolution)의 두 가지 컨볼루션 연산을 합한 것이다. 케라스의 convolutional layer는 여러 개가 있지만 그 중 SeparableConv와 DepthwiseConv이라는 레이어의 차이를 간략히 정리한다. 케라스의 SeparableConv layer는 Depthwise separable Convolution을 뜻한다.즉, Depthwise conv + pointwise conv를 하나의 레이어에서 수행한다. 케라스의 DepthwiseConv layer는 Depthwise separable Convolution에서 first step만 한다..
신경망 모델의 기본 개념, hypothesis등 뉴럴넷의 전반에 대해 알아본다. 뇌 안의 뉴런에선 Dendrite라는 여러 개의 input wire가 존재하며 Axon을 통해 다른 뉴런으로 신호를 전달한다. 간단한 인공지능 신경망 기본구조를 보면 여러 개의 input 뉴런이 다음 레이어의 뉴런과 연결된 wire를 따라 신호를 전달하고 output은 output wire를 따라 어떤 값이 나오게 된다. X_0는 보통 bias unit이라 1이다. 그리고 뉴럴넷 모델의 파라미터들을 weight라고 한다. 뉴럴넷은 이렇게 여러 개의 뉴런들이 서로 복잡하게 연결되어 있다. Input layer와 output layer 사이의 layer를 hidden layer라고 한다. 히든 레이어 유닛의 activation을..
뉴럴넷이 필요한 이유에 대해 알아본다. 이러한 데이터셋을 잘 분류해야 하는 문제를 풀 때 우리는 로지스틱 회귀를 이용하였다. 여기서 굉장히 많은 다항식을 필요로 하였고 두개의 feature만 다뤘기 때문에 이 모델은 현재 학습 데이터만 잘 분류할 수 있을 것이다. 이것보다 더 많은 100개의 feature를 다뤄야 하는 경우를 생각해보자 여기서 우리가 다변수 이차항까지 사용하게 된다면 항이 엄청나게 많아질 것이다. 그리고 이 때 사용하게 되는 feature의 개수는 약 5,000개 가량이 되며 이는 점근적으로 O(n^2)에 가까워진다. 단순히 각 feature를 제곱해서 모델을 만들면 훨씬 feature의 수는 적겠지만 위의 그림처럼 data를 잘 분류하긴 어려울 것이다. 그리고 만약 x_1 * x_2 ..
Overfitting의 정의와 Overfitting을 해결하는 방법에 대해 알아본다. 선형회귀로 집 값을 예측하는 예제를 다시 보자 첫번째 모델은 직선으로 집 값을 예측하고 있다. Size가 작을 때는 가격을 어느정도 예측할 수 있으나 Size가 점점 더 커질 수록 가격이 상승하는 폭이 줄어들기 때문에 직선을 사용해선 데이터를 잘 나타낼 수 없다. 다시 말해, 이 모델은 데이터에 제대로 맞지 않는 것이다. 이러한 문제를 과소적합(underfitting)이라고 하며 알고리즘이 high bias 성향을 가지고 있다고 한다. High bias 특성을 갖는다는 뜻은 이 모델이 데이터의 분포와 상관없이 집 크기에 따라서 집 값을 무조건 선형적으로만 예측하려는 성향을 가지고 있기 때문이다. 집 크기가 엄청 큰 데이..
로지스틱 회귀를 이용하여 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을 곱한 값이 된다. (눈에 잘 들어오기 위해 위의 첨자를 일부러 지운 것임) 선형..