본문 바로가기

전체 글418

Learning with gradient descent http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. 이번에는 우리가 만든 neuron network에서 숫자를 인식하기 위해 어떻게 학습을 시켜야 하는지를 살펴보자. 첫 번째로는 학습을 시키기 위한 data-set이 필요하며 우리는 MNIST data set을 이용할 것이다. 아래의 그림이 MNIST 데이터 set의 몇몇 데이타들이다. MNIST 데이터는 2가지로 나뉘는데 첫번째는 트레이닝 데이타로 쓰일 60000개 이미지이며, 이 이미지는 greyscale에 28 x 28 사이즈로 구성이 되어 있다. 두번째는 테스트 데이타로 쓰일 10000개 이미지이다. 이것 역시 28 x 28 greyscale 이미지로 되어 있다. 우리는 테스트 데이타를 사용해서 얼.. 2016. 1. 20.
Sigmoid neurons http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. Sigmoid neurons 학습 알고리즘이란 단어는 매우 매력적이다. 예를 들어 input 데이터가 스캐너의 raw data라든지, handwritten된 숫자 이미지일 경우에, 숫자의 정확한 분류를 output으로 출력하기 위해 weight와 bias를 학습해야 할 것이다. 어떻게 학습이 이루어지는지를 확인하기 위해서, 네트워크의 몇몇의 weight 또는 bias를 약간 변경할 수 있다고 가정하자. 우리가 weight를 조금 변경하면 그와 일치하게 output도 변화가 일어날 것이다. 이러한 속성은 학습을 가능하게 한다. 만약에 weight 혹은 bias의 변화를 준 결과 값이 참이라면, 우리는 해당.. 2016. 1. 19.
perceptron http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함. Using neural nets to recognize handwritten digits 아래의 handwritten된 숫자가 있다고 고려하자 어떤 숫자가 써있느냐고 묻는다면, 대부분의 사람들은 504192라고 인식할 것이며, 엄청 쉬운 질문이라고 착각할 것이다. 하지만 사실은 그렇지가 않다. 사람이 가지고 있는 뇌에서는 V1으로 잘알려진 시각피질, 1억 4천개의 뉴런, 그리고 그들 사이의 수백억개의 연결 고리들을 가지고 있다. 또한 사람의 시각은 V1만 포함하고 있는게 아니라 V2,V3,V4,V5 전체를 포함하고 있으며 더 복잡한 이미치 처리를 수행한다. 우리는 시각적 세상을 이해하기 위해 최적으로 적.. 2016. 1. 14.
Tail Recursion - Coursera 강의 ppt 번역 Review: Evaluating a Function Application f(e1, ..., en) 이라는 함수가 있다고 가정할 때, expression e1,...,en 의 결과 값은 v1,...,vn이 되며, 함수 f 안에 있는 e1,...,en을 v1,...,vn으로 교체해도 함수 f의 동작이 무방할 때 이를 substitution model이라고 한다.아래 코드는 위의 글을 프로그램적으로 다시 쓴 것이다. def f(x1,...,xn) = B; ...f(v1,...,vn)def f(x1,...,xn) = B; ... [v1/x1,..., vn/xn]B 여기서 [v1/x1,...,vn/xn]B이 의미하는 것은 expression B에 있는 모든 vi는 xi에 의해 교체될 수 있음을 의미하고, [v.. 2016. 1. 7.
싸다구 v1.1.3 업데이트 싸다구의 v1.1.3 버전이 드디어 업데이트 되었다. (감격 감격) 근 1년만의 업데이트라 감개가 무척이나 무량함...1년 동안 사용자도 많이 감소하고 열정도 많이 식긴 했지만, 그래도 앱이 재탄생한 기쁨은 이루 말할 수가 없는 것 같다. 우선 기존 앱과의 가장 큰 변화는 UI가 대폭 변경되었다는 점을 들 수가 있다.첫 번째로 아이콘의 변화. 팀에 디자이너가 없는 관계로 우리가 직접 만든 아이콘이지만 싸다구 앱에 대한 특징을 잘 요약한 (장바구니에 최대한 할인해서 담아라!) 아이콘인 것 같다. 두번째 변화로는 처음 데이터를 받아오기 위해 기다리는 동안 띄워지는 로고창이 생겨났다. 배달의 민족의 글씨체를 인용해서 만든 로고창이다. 색감도 빨간색 계통으로 변경해서 좀 더 사용자 눈에 잘 띌 수 있도록 구성하.. 2015. 12. 29.
Blocks and Lexical Scope - Coursera 강의 ppt 번역 Nested functions 많은 작은 함수 조각으로 분리해서 프로그래밍 하는 것은 좋은 functional programming style이다.그러나 sqrtIter, improve, isGoodEnough 와 같은 함수들은 sqrt의 구현 부분이지 도움말 같은 요소는 아니다. 게다가 사용자 역시 이러한 함수에 직접적으로 접근하지는 않는다.우리는 sqrt 내에 이러한 함수들을 집어넣음으로써 "name-space-pollution"을 피할 것이다. The sqrt Function, Take 2 def sqrt(x: Double) = { def sqrtIter(guess: Double, x: Double): Double = if (isGoodEnough(guess, x)) guess else sqrtIt.. 2015. 12. 29.
Square roots with Newton's method - Coursera ppt 번역 Task 이번 세션에서는 아래의 함수를 정의할 것이다. def sqrt(x: Double): Double = ... Newton's method를 이용하여 연속적인 호출로 값을 추산할 것이다. Method sqrt(x)를 계산하기 위해서는 - 초기 값 y와 함께 시작이 되어야 한다.( 초기 y 값을 1이라고 정의하자.)- y의 평균 값과 x/y 값을 반복적으로 계산함으로써 값의 추정을 향상시킨다. Example: x가 2일때, 추정값 몫 평균1 2/1 = 2 1.5 ( (1 + 2) / 2)1.5 2/1.5 = 1.333 1.4167 ((1.5 + 1.333) / 2)1.4167 2/1.4167 = 1.4118 1.4142 ((1.4167 + 1.4118)/2)1.4142 ... ... Implement.. 2015. 12. 28.
Conditionals and Value Definitions - Coursera 강의 ppt 번역 Conditional Expressions 두 가지의 대안 중 하나를 선택하기 위해서 scala에서는 if-else라는 conditional expression을 사용한다.자바의 if-else와 유사하게 보이지만, statements가 아닌 expression의 용도로 사용한다. statements와 expression의 차이- statements는 컴퓨터에게 어떤 동작이나 지시를 내리기 위한 명령문 형태인 반면에 expression은 어떤 값을 산출해내기 위한 함수나 연산자의 조합을 말한다. statements에서는 side effect가 발생하는 반면 expression은 side effect를 발생시키지 않는다고 한다. 자세히 어떤 차이인지 잘 모르겠다. ex)def abs(x: Int) = if .. 2015. 12. 25.
Evaluation Strategies and Termination - Coursera 강의 ppt 번역 Call-by-name, Call-by-value and termination 지난 시간에 call-by-name과 call-by-value 전략에 대해 간략히 살펴보았다.그런데 만약 종료 조건이 보장이 안된다면 어떻게 할까? 아래의 명제는 반드시 보장이 된다. - 만약 call-by-value가 종료된다면, call-by-name 역시 종료가 된다. Scala's evaluation strategy Scala는 일반적으로 call-by-value를 실행한다.그러나 만약 함수 파라미터의 타입이 =>로 시작한다면 이는 call-by-name을 실행하겠다는 의미가 된다.ex)def constOne(x: Int, y:=> Int) = 1 constOne(1 + 2, loop) Vs constOne(loop, .. 2015. 12. 24.