똑똑한 후배에게 Gradient descent 를 설명해 주었더니, learning rate 구현을 빼먹어서 error function 이 발산하는 쪽으로 가버렸네요.. 최적화 방법 중에 그럼, learning rate 없이 할 수 있는 방법을 없을 까요? *Gauss-Newton Method 설명을 위해서 Newton's Method 에 대한 설명이 필수적이라, 먼저 간략히 설명 뒤에 Gauss-Newton Method에 진행하겠습니다. Newton's methodWikipedia : https://en.wikipedia.org/wiki/Newton%27s_method - 임의의 시작점에서 함수의 미분을 이용하여 1차 식으로 근사하여 0과 만나는 다음의 x 값으로 x를 업데이트 진행하는 방식입니다. 아..
Gradient Descent 방법 중 업데이트 시 데이터를 사용하는 기준에 따른 분류 Batch Gradient DescentStochastic Gradient DescentMini-batch Gradient Descent $$ \large \begin{matrix} \\ \vec p_{t+1} = \vec p_t - \lambda \nabla E(\vec p_t) \tag {1} \end{matrix} \\ \\ \lambda \text{ : learning rate } $$ 우선 Batch 경우는 $\vec p_{t+1}$ 업데이트를 할때 주어진 학습 데이터를 전부 사용하여 진행하기 때문에 방향에 대해서는 정확할 수 있지만, 계산량 면에서는 너무 많을 수 있습니다. 다음 경우로 Stochastic ..
써먹을 일 없다고 내려두었던 내용들이 누군가에게 도움이 된다면, Linear regression 에 대해서는 closed-form 인 pseudo inverse 존재하기 때문에 대부분은 gradient descent 방식을 시도 조차 하지 않습니다. 하지만, nonlinear 로 넘어가면 꽤나 간단하면서 직관적인 최적화 방법이기 때문에 많이 사용하고 있습니다. 제가 이번에 다룰 내용은 polynomial 함수 (y = ax^2 + bx + c), 2차 함수에 대해서 gradient descent 방법을 통해 최적화 하는 방법을 다루도록 하겠습니다. 시작에 앞서 기초적인 내용과 수식을 설명 드리겠습니다. 수식 전개에 앞서서 저랑 약속 한개만 할께요, 모든 벡터는 열벡터 이고 위와 같이 열벡터를 볼드체로 표..
요즘은 어느 곳이든 머신 러닝이라는 말을 많이 사용합니다.더 나아가 딥러닝이란 말도 사용하는데 정말 머신러닝이 무엇을까요? 대부분 사람은 아래 x와 그 결과가 나온 표를 보고는 f(10) 이 무엇이 될지 단박에 알아 냅니다.어떻게 이런 일이 일어나고 있는 것일까요? 1. 입력과 출력의 데이터를 쭈욱 본다.2. 출력에 연관된 함수(모델)을 몇가지 생각해본다.3. 잘 들어맞는 함수를 찾아낸다.4. 그 함수에 최종 10 값을 넣어 그 결과를 도출한다. 위 예를 가지고 용어를 정리해보도록 하겠습니다.정답지가 주어져 있는 경우를 supervised 그렇지 않은 경우를 unsupervised 라고 합니다. unsupervised 우선 논외로 하고 위에처럼 정답지 데이터가 주어진 경우를 머신러닝에서는 supervis..
Web 을 하기에 여러종류의 있지만, Java 계열의 spring boot 에 대해서 포스트를 진행하도록 하겠습니다.우선 가장 중요한 것은 개발 환경을 잘 구성하는 것 입니다. 1. Eclipse.org 접속 - Download 2. Download Packages - 설치파일로 받고 싶은신 분은 바로 Download 64 Bit 로 설치하시면 됩니다.(제 경우는 binary 실행파일로 설치하고 하는 경우 입니다.) 3. eclipse-jee-neon-*.zip 파일을 다운로드 하여 적당한 곳에 압축을 풀고 eclipse 실행 4. eclipse market place 에서 Spring 으로 검색하셔서 Spring IDE 최신 버전을 인스톨5. New Project 에서 Spring Spring Star..
이 내용은 다크 프로그래머님의 http://darkpgmr.tistory.com/141 (벡터 미분과 행렬 미분) 내용을 보고 내용을 정리 한 수준입니다. 다크 프로그래머님의 내용과 같이 추가로 https://en.wikipedia.org/wiki/Matrix_calculus 위키피디아 내용도 참조하였습니다. 학부 시절에 배웠던 gradient 가 머신러닝을 하면서 이렇게 와 닿을 줄 몰랐습니다. x1, x2, x3 독립 변수를 가지는 f(x) 에 대하여 gradient 를 취하면 각 독립변수에 대한 미분 값을 구할 수 있습니다. ( 스칼라 미분을 벡터로 확장). 다음에 배우겠지만, vector 를 vector 로 미분하게 되면 jacobian 까지 확장 될 수 있습니다. 이제 추가로 matrix(행렬)..
Visitor pattern 은 객체 내부에 있는 알고리즘을 분리 시키는 패턴입니다. 알고리즘을 분리시켜 놓으면 구조를 수정하지 않아도 새로운 기능(알고리즘)을 만들기 쉽기 때문입니다. 저도 공부하면서 와닿지 않는 패턴이었고, 다른 분들도 이해하기 어려운 패턴 중에 하나라고 말씀드리고 싶습니다. 제가 살고 있는 아파트를 말씀드리면, 소독하시는 여사님, 물건을 배달해주시는 택배기사님, 술한잔 하러 놀러오는 친구들이 찾아옵니다. 이 뜬금없는 한 문장에 visitor pattern 의 핵심 내용이 들어있습니다. 아파트라는 정해진 구조(structure)에 많을 일들을 해 주시는 분(visitor)이 오셔서, 문을 열어주면(accept) 많은 일들을 할 수 있게합니다.(algorithm, operation)오늘..
Strategy Pattern 의 컨셉은 어떤 전략(algorithm or strategy) 을 추상화 하여 전략을 쉽게 변경하는데 의미를 둘 수 있습니다. 대부분 이런 말을 하면 크게 와닿지가 않아서 디자인 패턴의 최고 할 수 있는 스타크래프트 게임에 비유해서 말하곤 합니다. 어떤 유닛이든 기본적으로 전략(algorithm, strategy)를 공통으로 뽑아보면, 여러개가 있지만 우선적으로 움직이거나 공격할 수 있는 공통 전략을 추출할 수있습니다.
웹이라고는 html, css, javascript 가 어떤 의미인지도 몰랐던 시절에 무조건 웹을 개발하라고 해서 무턱대고 만들었던 기억이 엊그제 같습니다. 혼자 구글과 싸움을 벌이면서 온갖 xml 이 넘쳐나던 spring mvc, 지금 생각해봐도 개발자의 능력보다는 구글링의 스킬만 키우면 엄청나겠구나! 를 느끼게 합니다. 머신러닝 관련해서 한 동안 C++ 사용해와서 기억속에서 지워져 가는 웹을 되살림겸, xml 에 지쳐서 spring boot 로 간단하게 만들었던 prototype 을 통해서 웹에 대해서 포스팅 하도록 하겠습니다. https://github.com/elentail/springboot.git (spring boot 1.3.1 버전 -- > 1.5 로 전환 예정)* angularjs, boo..
이글은 순수하게 다크프로그래머 님의 기계학습 중 함수 최정확 기법정리 부분을 인용하여, 내용은 정리한 수준입니다.http://darkpgmr.tistory.com/142 *residual 이 최소가 되는 일반적인 최소자승법 * parameter 에 linear 한 모델의 경우 아래와 같이 수식 유도 가능합니다. -> Ap * 선형회귀(linear-regression) 경우 pseudo inverse 를 통해 특정해를 구할 수 있습니다. *일반적인 해를 구하는 방식으로 아래 4가지 방식에 대해서 추가 설명 드리겠습니다.1. Gradient Descent2. Newton-raphson3. Gauss-Newton4. Levenberg_marquardt
- Total
- Today
- Yesterday
- Digital watermarking
- tensorflow serving
- flask serving
- DWT-DCT
- 캡처방지
- backpropagation
- Residual Block
- SvD
- DW
- dct
- keras
- numpy
- implementation
- gPRC
- 네이버웹툰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |