목록분류 전체보기 (28)
코딩로그
one-variable one-feature system이 아닌 다양한 feature에 대한 variable을 예측한다. 구체적 방법 이전에는 H(x) = Wx+b 였다면 현재는 H(x1,x2,x3) = w1x1+w2x2+w3x3+b와 같이 한다. -> 시작노드가 w,b의 두개에서 w1,w2,w3,b의 네 개로 시작하는 것 행렬을 이용한 계산으로 단순화 한다. 그러나 이 코드를 이용하면 특성의 갯수가 많아질 때 위와 같이 hypothesis를 매우 길게 써야할 수도 있다. 따라서 Matrix, 즉 행렬을 이용한다. 코드 실행시간을 측정해본 결과 matrix를 사용한 multi-linear regression이 훨씬 빠른 속도를 보였다.
- linear regression의 cost 최소화 알고리즘에 대해 알아보자. 이전시간에는 텐서플로에서 제공하는 간단한 코드 몇줄로 cost를 최소화 했지만, 이번에는 그 원리에 대해 알아보고 구체적인 부분까지 구현해볼 것이다. - 일단, 설명을 간단하게 하기 위해 편향 b를 없애보았다. - 다음과 같은 training data 가 있을 때, W의 값에 따라 cost(W)의 값은 어떻게 변할까? W = 1, cost(W) = 0 W = 0, cost(W) = 4.67 W = 2, cost(W) = 4.67 - 계산해 보면 위와 같다. W를 x축으로, cost(W)를 y축으로 하여 그래프로 나타내보았다. - 다음과 같이 이차함수의 형태를띈다. 그림을 보면 1에서 최솟값을 갖는 것을 알 수 있다. - 그런..
- tensor flow mechanic에 따라 linear regression을 실습해보자 - 전체코드와 이를 간략하게 노드로 나타낸 것이다. - x와 y를 place holder를 통해 지정한다.
- predicting exam score : 1부터 100까지 나타내는 것이므로 regression이다. - 시간당 점수로 supervised learning을 한다고 하자. - x : 데이터의 특성(feature) - y : 예측값 - regression 모델을 학습한다는 것 – 가설을 세우는 것 - 잘 모르겠지만, 이 데이터는 아마 linear할 거야. 따라서 이 가설에 대입하면 답은 이것일꺼야. 라고 예측한다. - 훈련시간과 달리기실력, 집 크기가 클수록 가격이 크다든지 세상의 많은 것들이 linear하다. 따라서 유용하다. - linear하게 가설을 세운다는 것? – 선을 찾는 것! - 그게 바로 학습이다. - 가설을 세우는 방법 - 1. 일차함수로 가설을 세운다. - 2. 어떤 선이 가장 데이..
- 텐서플로우 : google에서 만든 머신러닝 오픈소스 라이브러리이다. - 텐서플로우를 이용하는 이유 : 많은 사람이 사용해서 공부할 수 있는 자료가 많다. - 텐서플로우란? data flow graphs를 사용해서 numeric한 계산을 하는 라이브러리 파이썬을 이용해 프로그래밍 할 수 있다. node: mathematical operation를 나타내는 것 사진에서의 동그라미를 의미한다. 텐서가 여기를 지나갈때마다 더해지고, 곱해지고 수학적인 연산이 이루어진다. edges: 노드와 노드를 잇는 다차원의 data arrays(tensors) 텐서들이 들어와서 플러스가되구, 마이너스가 되구 이렇게 왔다갔다 하니까 이름도 텐서플로다 ! - 프로그래밍의 시작인, hello world 를 출력해보자. - t..
- 보통의 프로그램들은 특정한 입력에 대해 특정한 출력을 내도록 엔지니어가 코드를 작성한다. 이를 explicit programming이라고 한다. 그러나 여기에는 몇가지 문제점들이 있다. spam filter : 스팸을 걸러내는 경우 rule이 너무 많아서 일정한 rogic으로 해결하기가 힘들다. 자율주행 : 이또한 rule이 너무 많다 - 이를 해결하기 위해 나온 것이 '머신러닝'이다 - 머신러닝 : explicit programming 없이 데이터를 보고 직접 학습할 능력을 갖는 프로그램 # superviesd learning : 정해진, 이미 레이블된 데이터(training set)를 갖고 학습하는 것이다. ex) 고양이인지 강아지인지 알아보는 것들 사람들이 cat이란 레이블이 달려있는 것을 주고..
얼마나 깊은 신경망을 사용해야 하는지 미리 정확하게 예측하기는 어렵습니다. 표기법 L : 네트워크 층의 수 n[l] : l층에 있는 유닛 개수 a[l] : l층에서의 활성값 a[0] : 입력 특징 (X) a[L] : 예측된 출력값 ( y^ ) l 번째 층에서 정방향 전파는 이전 층의 활성화 값인 a[l−1]을 입력으로 받고, 다음 층으로 a[l] 값을 출력으로 나오게 합니다. 이때 선형결합된 값인 z[l] 와 변수 W[l],b[l] 값도 캐시로 저장해둡니다. l 번째 층에서 역방향 전파는 da[l] 을 입력으로 받고, da[l] 를 출력합니다. 이때 업데이트를 위한 dW[l] 와 db[l] 도 함께 출력합니다. 이들을 계산하기 ..
입력 특성들의 층을 입력층이라하며 a[0] 으로 표기합니다. 은닉층이랑 입력층과 출력층 사이에 있는 모든 층을 의미합니다. l번째 은닉층의 n번째 유닛은 an[l] 으로 표기합니다. 예를 들어 첫 번째 은닉층은 a[1] 로 표현하며 첫 번째 은닉층에 있는 첫 번째 유닛은 a1[1] , 첫 번째 은닉층에 있는 두 번째 유닛은 a2[l] 로 표현할 수 있습니다. 출력 특성들의 층을 출력층이라 합니다. 신경망 층의 개수를 셀 때는 입력 층은 제외합니다. 예를 들어 아래의 그림은 은닉층 1개, 출력층 1개 이기에 2층 신경망이라합니다. 입력값이 노드를 통과할 때, 두가지 과정을 거치게 됩니다. z=wT+b a=σ(z) 표기법은 아래와 같습니다. ai[l] l : 몇 ..