일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 역전파법
- Autoencoder
- bayesian
- 신경망
- 자전거 여행
- 오토인코더
- project euler
- 소인수분해
- 딥러닝
- backpropagation
- Convolutional Neural Network
- 소수
- 수달
- CNN
- Python
- 냥코 센세
- A Neural Algorithm of Artistic Style
- 비샤몬당
- deep learning
- Gram matrix
- 전처리
- 오일러 프로젝트
- mnist
- SQL
- c#
- 베이지안
- 역전파
- 히토요시
- neural network
- 합성곱 신경망
- Today
- Total
통계, IT, AI
1. 개요- 입력이 4개이며 출력은 3가지 클래스를 갖는 경우를 생각해보자. 신경망은 그림 1과 같다.- 입력과 파라미터를 아래와 같이 정의한다.$$\begin{eqnarray} x_n&=& \begin{bmatrix}x_{n1} & x_{n2} & x_{n3}& x_{n4} \end{bmatrix}, \quad w=\begin{bmatrix}w_{11} & w_{21} & w_{31} \\ w_{12} & w_{22} & w_{32} \\ w_{13} & w_{23} & w_{33} \\ w_{14} & w_{24} & w_{34} \end{bmatrix}, \quad b=\begin{bmatrix}b_{1} & b_{2} & b_{3} \end{bmatrix} \\ \\ u&=&\begin{bmatr..
1. 개요- 변수가 2개이며 종속변수가 이진형인 경우를 생각해보자. 신경망은 그림 1과 같다.- 훈련데이터의 수는 200으로 한다. - 출력이 이진형이므로 활성함수는 sigmoid로 한다. - 즉, \(u_1=w_{11}x_1+w_{12}x_2+b_1\)이며 \(z_1=f(u_1)=1/(1+exp(-u_1))\)이다. - \(x_1\)과 \(x_2\)는 \(U(-1,1)\)에서 각각 독립적으로 생성한다.- 출력 \(d\)는 아래와 같이 정의한다. 단, \(\varepsilon\)은 \(N(0, 0.3^2)\)를 따른다.\begin{eqnarray}d = \begin{cases} 1 & \text{if } x_2 > x_1 + 1 + \varepsilon \\ 0 & \text{otherwise} \end..
1. 개요문제는 이곳에서 확인할 수 있다. \(1634\)는 각 자리수의 4승의 합과 같다. 즉, \(1634=1^4+6^4+3^4+4^4\)이다. 이와 같이, 각 자리수의 5승의 합과 같은 모든 숫자의 합을 구하는 것이 목표이다. 단, 1은 합이 아니므로 제외한다.2. 구현: ver 1.0무한히 많은 숫자에 대해서 이를 테스트할 수는 없으므로 상한선을 찾아야 한다. \(n\)자리의 수 \(d\)가 있다고 하자. \(d\)의 최소값은 \(10^{n-1}\)이며, 최대값은 \(10^n-1\)이다. 그리고 \(d\)의 각 자리수의 5승의 합의 최대값은 \(9^5n\)이다. 따라서 \(10^{n-1}>9^5n\)를 만족하는 \(n\)부터는 확인할 필요가 없다. 사실 \(9^5\times 7=59049 \tim..
1. 개요- 다음 파트로 넘어가기 전에 지금까지 배운 것을 구현하여 이해를 확실하게 하자. - 가장 간단한 경우부터 연습하기 위하여 변수가 1개인 회귀 문제를 선택한다. 즉, 신경망은 다음과 같다. - 출력층의 활성함수는 항등함수로 한다. 그러므로 \(u_1=w_{11}x_1+b_1\)이며 \(z_1=f(u_1)=u_1\)이다. - 연습에 사용할 \(x_1\)은 \(U(-4,4)\)에서 200개를 생성한다. - 출력 \(d\)는 \(x_1-1+\varepsilon\)이며 \(\varepsilon\)은 \(N(0,1)\)를 따른다. - 데이터의 형태는 그림 2와 같다. 붉은 선은 연습에서 추정해야 할 파라미터를 나타낸다.- minibatch를 사용하며 1개의 batch size는 20으로 하며 반복횟수(e..
3. 확률적 경사 하강법: Stochastic Gradient Descent 3.1 경사 하강법 - 학습의 목표는 \(\boldsymbol{w}=\underset{\boldsymbol{w}}{argmin}E(\boldsymbol{w})\)을 찾는 것이다. 그런데 \(E(\boldsymbol{w})\)가 일반적으로 볼록함수가 아니기 때문에 전역 극소점을 찾는 것이 매우 어렵다. 하지만 어떤 국소 극소점에서의 \(E(\boldsymbol{w})\)가 충분히 작다면 문제를 해결할 수 있다. - 이러한 점을 찾는 방법에는 경사 하강법이 있다. - 먼저 다음과 같이 \(E\)의 기울기를 구한다. 단, \(M\)은 \(\boldsymbol{w}\)의 성분 수이다. $$\nabla E(\boldsymbol{w})=\..
2. 앞먹임 신경망: Feedforward Neural Network 2.1 유닛의 출력 - 앞먹임 신경망은 층(layer) 모양으로 늘어선 유닛이 인접한 층과 결합한 구조이다. - 정보가 입력 측에서 출력 측으로만 흐르기 때문에 Feedforward라는 이름이 붙여졌다. - Multi-layer perceptron이라고도 부르지만 최초 제안된 perceptron은 입출력 함수가 step 함수로만 제한되었기 때문에 약간 다르다.- 유닛 한 개의 입출력의 예시는 아래와 같다. - 이 유닛이 받는 총 입력은 \(u_1=b_1+w_{11}x_1+w_{12}x_2+w_{13}x_3+w_{14}x_4\)이다.- \(b_1\)은 bias라고 부르며 1에 곱해지는 가중치이다.- \(w_{ji}\)는 입력에 대한 가중..
1. 개요 문제는 이곳에서 확인할 수 있다. 정수 \(a\in[2,100], b\in[2,100]\)에 대하여 \(a^b\)의 개수를 세는 것이 목표이다. 단, 중복은 제외한다. 2. 구현: ver 1.0loop를 이용하여 구현하되 overflow를 방지하기 위하여 Decimal 내장 모듈을 사용한다. # -*- coding: utf-8 -*- import decimal as d term_list = [] for a in range(2, 101): for b in range(2,101): term_list.append(d.Decimal(a) ** d.Decimal(b)) print(len(set(term_list))) 답은 9183이다.
1. 개요문제는 이곳에서 확인할 수 있다. 1부터 시계 방향으로 늘어놓은 뒤 대각선에 있는 숫자들의 합을 구할 수 있다. 아래의 예는 5행 5열의 숫자더미이며 대각선의 숫자의 합은 101이다. 1001행 1001열의 숫자더미에서 대각선의 숫자의 합을 구하는 것이 목표이다. 2. 구현: ver 1.0일반항을 구하여 문제를 해결하자. 1부터 시작하여 오른쪽에 존재하는 숫자들의 개수를 층이라고 정의하자. 예를 들면, 그림 1은 3층이다. 그러면 오른쪽 대각선의 있는 숫자는 층수 번째 홀수의 제곱임을 알 수 있고 이를 이용하여 일반항을 구할 수 있다. # -*- coding: utf-8 -*- n = 500 print(n*(8*(n+1)*(2*n+1)//3+2*n+6)+1) 답음 669171001이다.
1. 들어가며2차원의 세계가 존재한다고 가정하고 그곳을 플랫랜드라고 부르자. 즉, 플랫랜드에는 높이라는 것이 없다. 플랫랜드에서 일어나는 일을 상상해보자. 먼저 그곳의 주민들을 관찰한다면 아래와 같은 모습일 것이다. 테두리는 피부이고 그 안에 보이는 것은 장기이다. 우리는 장기를 관찰할 수 있고 심지어 만질 수도 있다. 그곳의 주민 A를 들어 다른 곳에 두자. 그러면 플랫랜드의 사람들은 A가 갑자기 사라지고 엉뚱한 곳에 나타났다고 생각할 것이다. 우리가 플랫랜드에 다리를 걸쳐둔다면 그들은 동그란 두개의 원을 볼 수 있을텐데 사실 그 두개의 원이 하나의 존재라는 것을 결코 쉽게 이해하지 못할 것이다. 이제 우리에게 과제가 하나 주어졌다. 아래와 같은 3차원의 물체를 어떻게 해야 그나마 그들에게 잘 이해시킬..
1. 들어가며 C#에서 UI를 개발하면서 이벤트가 무엇인지 고민하게 되었다. 즉, Visual Studio에서 이벤트 처리를 잘 지원하는 덕분에 아무 생각없이 해왔는데 좀 더 복잡한 것을 하려고 하니 이벤트를 잘 모른다는 것을 알게 된 것이다. 이번을 기회로 이벤트가 무엇인지 간단하게 정리하려고 한다. 2. 이벤트의 개념 아래는 MSDN에 나오는 간단한 UI이다. 노란 패널에 무엇인가를 쓸 수 있고 Clear 버튼을 누르면 노란색 부분에 써져 있는 것이 지워진다. 이를 구현하기 위해서는 Clear 버튼이 눌리는 사건이 발생하면 그 정보를 패널에 전달해 주는 것이 필요한데, 그것이 이벤트이다. 즉, 이벤트는 한 클래스에서 어떤 사건이 발생하면 그 정보를 다른 클래스로 넘기는 방법이다. UI를 구성할 때 자..