목록분류 전체보기 (33)
코딩하는 바나나
앞서 우리는 두가지의 class를 가지는 데이터를 구분하는 logistic 모델을 살펴 보았다. 이번에는 두가지 이상의 class를 같는 데이터를 구분하는 모델을 살펴보자. 세가지의 class A,B,C를 가지는 데이터가 있다고 생각해보자. 우리는 logistic 모델 3개를 사용하여 데이터를 구분 할 수 있다. A인 것과 아닌것, B인 것과 아닌 것, C인 것과 아닌것을 구부하는 3개의 logistic 모델이다. 3가지의 특징과 3가지의 class를 가지는 데이터를 생각해보자 x1 x2 x3 a b c 3 1 3 1 0 0 3 2 1 0 1 0 1 3 1 0 0 1 위의 데이터의 3가지 클래스가 one hot encoded 되어있다. X -> ㅁ -> sigmoid -> Ya X -> ㅁ -> sigm..

Abstract 이 논문에서는 deep network는 대체로 train 하는 것이 어렵기 때문에 깊은 모델의 train을 더 쉽게 만들어주기 위한 방법으로 Residual Learning Framework를 제시합니다. Deep network가 train이 어려운 이유는 뒤에서 설명됩니다. Residual Learning Framework는 redidual function을 layer에 새롭게 추가하는 방식입니다. 뒤에 어떤 구체적인 방식으로 이루어지는 지와 accuracy가 얼마나 좋아지는지에 대해서는 뒤에 실험적인 증거와 함께 설명됩니다. 그래서 ResNet은 VGGNet 보다 8배 깊은 layer로 훨씬 더 좋은 성능을 보이는 것 뿐만 아니라 더 적은 dropout 같은 테크닉을 적용하지 않아 더..

VGGNet 은 옥스포드 대학에서 개발된 모델로 2014년 ILSVRC에서 2위를 차지한 CNN을 기반으로 한 딥러닝 모델이다. Introduction VGGNet은 CNN을 기반으로 하였기 때문에 CNN과 마찬가지로 크게 Convolutional layer, pooling layer, Fully connected layer 이렇게 3가지의 layer들로 구성된다. 그러나 VGG 이전의 ILSVRC에서 높은 순위를 차지한 모델들과는 다르게 CNN 모델의 depth 즉, 깊이에 중점을 둔다. 이전의 모델들은 주로 큰 receptive field (필터 크기)를 사용했지만 VGG에서는 모델을 더 깊게 설계하기 위해 아주 작은 receptive field (3 * 3)를 사용한다. 이렇게 작은 필터 크기를 사..

이전에 Linear Regression에서 우리가 보았던 시험성적 예제와 다른 예제를 생각해보자 이번에는 어떤 수업을 듣는 학생들의 공부 시간과 그 수업에 대한 pass, fail 여부에 대한 데이터가 있다. pass, fail 여부를 숫자로 각각 1,0으로 나타내면 위와 같이 표현 할 수 있다. 이 경우 Linear Regression을 사용할 수 있을 까? 저렇게 연속적인 분포가 아닌 데이터를 linear regression을 사용하게 되면 잘 동작하지 않는다. 따라서 우리는 다른 방법이 필요하다. Sigmoid Logistic Regression에서는 Sigmoid 함수를 사용한다. sigmoid 함수는 위와 같이 생겼다. 1 / (1 + e^-x) 함수 식을 보면 알 수 있듯이 함수값이 1에서 0..

Linear Regression (선형 회귀법)은 머신러닝의 가장 기초가 되는 알고리즘이다. Linear Regression이란 무엇일까? 예를 들어 보자. 아래에 학생들의 퀴즈 점수와 final test 점수가 있다. 이 데이터를 기반으로 어떤 새로운 학생의 퀴즈 점수를 보고 final test의 점수를 예측하는 모델을 만들고 싶다. 학생 퀴즈 final test A 90 80 B 70 70 C 40 50 어떻게 해야 할까? 이럴 때 사용 할 수 있는 것이 바로 Linear Regression (선형 회귀) 이다. 위의 데이터를 그래프로 표현해 보자 x축은 학생들의 퀴즈 점수, y축은 학생들의 final test 점수를 의미한다. 초록색 점들이 각 학생을 의미한다. x 값을 기반으로 y값을 예측하기 위..

Machine Learning이란 무엇일까? 기존의 프로그램들은 대부분 사람이 만든 규칙에 의해 동작하는 프로그램들이다. 우리가 여러가지 제어문을 통해서 프로그램의 흐름을 정의하는 것이 프로그래밍이었다. 이러한 프로그래밍 방법은 잘 작동한다, 하지만 시간이 흐르다 보니 단순한 프로그래밍 만으로 해결 할 수 없는 문제들이 나오기 시작했다. 복잡한 문제를 기존의 프로그래밍 방식으로 구현한다면 모든 사람이 경우의 수에 대해 하나하나 코딩해주어야 할 것이다. 사진을 보고 물체를 판별하는 프로그램, 자율주행 자동차 등 기존의 방법으로 프로그래밍 하기에는 한계가 있다. 이를 해결해주는 것이 Machine Learning이다. Machine Learning은 이름 그대로 기계가 학습을 하는 것이다. 우리가 컴퓨터에게..

rebase는 merge와 그 기능이 같다. 한 브랜치에서 다른 브랜치로 합치는 기능을 한다. 하지만 그 결과가 조금 다르다, 먼저 앞서 배웠던 merge의 경우 3-way-merge를 할 경우 새로운 커밋이 생기며 브랜치가 합쳐진다. 그러나 rebase를 할 경우 이 보다 커밋 기록을 조금 더 깔끔하게 할 수 있다. 더보기 $ git checkout experiment $ git rebase master $ git checkout master $ git merge experiment 이와 같이 명령을 하면 먼저 두 브랜치의 공통 커밋인 C2로 이동해 현재 브랜치인 experiment의 가장 최근 커밋인 C4까지 diff를 만들어 임시로 저장하고 experiment를 master가 가리키는 커밋을 가리키..
리모트 저장소에 있는 브랜치들은 리모트 Refs라는 리모트 저장소에 있는 포인터가 가르키고있다. 더보기 $ git is-remote [remote] 위의 명령으로 모든 리모트 Refs를 조회할 수 있다, gir remote show [remote] 명령어는 모든 리모트 브랜치와 그 정보를 보여준다. 리모트 Refs가 있지만 보통은 리모트 트래킹 브랜치를 사용한다. 리모트 트래킹 브랜치 리모트 트래킹 브랜치는 리모트 브랜치를 추적하는 브랜치이다. 리모트 브랜치와 달리 리모트 트래킹 브랜치는 로컬에 있지만 임의로 움직일 수 없다. 리모트 서버에 연결할 때마다 업데이트되어 자동으로 갱신된다. 리모트 트래킹 브랜치의 이름은 / 형식으로 되어있다. -> origin/master. 우리가 git clone을 하면 ..