일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- c#
- 오일러 프로젝트
- 소수
- Autoencoder
- Python
- 자전거 여행
- 신경망
- 히토요시
- Gram matrix
- 역전파
- deep learning
- 냥코 센세
- 역전파법
- 소인수분해
- 오토인코더
- bayesian
- 비샤몬당
- 합성곱 신경망
- A Neural Algorithm of Artistic Style
- neural network
- project euler
- backpropagation
- 딥러닝
- CNN
- mnist
- 수달
- Convolutional Neural Network
- 베이지안
- SQL
- 전처리
- Today
- Total
목록분류 전체보기 (94)
통계, IT, AI
1. 개요 최근에 두가지 베이즈 문제에 대해서 생각할 기회가 있었다. 하나는 몬티홀 문제를 베이즈 룰을 사용하여 증명하는 것이었고 또 하나는 간단한 베이즈 문제였다.2. 몬티홀 문제 몬티홀 문제는 아주 널리 알려진 확률론 문제로 확률과 직관이 항상 일치하지는 않는다는 예시이다. 진행을 위해 문제를 간단히 소개한다. 3개의 커튼 뒤에 염소 두마리와 스포츠카 한대가 있다. 도전자는 스포츠카가 어디에 있는지 모른다. 도전자가 3개의 커튼 중 하나를 선택하면, 스포츠카의 위치를 알고 있는 사회자가 염소가 있는 커튼을 열고 도전자에게 커튼을 바꿀 기회를 준다. 그렇다면 도전자는 선택을 바꾸는 것이 유리할까? 답은 "그렇다"라는 것이 잘 알려져 있다. 왜 그럴까? 나는 그 답을 베이즈 정리를 사용하여 유도해보고 싶..
1. 개요 CNN으로 Mnist 데이터를 학습해보자. 먼저 대략적인 구조는 그림 과 같다. 입력 데이터의 사이즈는 \((1,28,28)\)이다. 흑백 이미지이기 때문에 1개 채널이며 가로, 세로로 28 픽셀이다. 각 원소를 0부터 255사이의 값을 가지는데 이를 정규화하여 0부터 1사이의 값을 갖도록 변환한다. 합성곱층Convolution Layer에서 필터는 \((30, 5, 5)\)의 사이즈를 갖도록 한다. 따라서 합성곱층의 결과 데이터의 사이즈는 \((30, 24, 24)\)가 된다. 풀링층Pooling Layer은 최대 풀링Max Pooling을 사용하며 \((2,2)\)의 윈도우를 갖도록 한다. 따라서 풀링층의 결과 데이터는 \((30,12,12)\)의 사이즈를 갖는다. 풀링층의 결과 데이터는 ..
1. 개요 CNN(Convoluional Neural Network; 합성곱 신경망)은 특히 이미지 인식 분야에서 자주 사용되는 신경망이다. 지금까지 본 신경망(이하 완전연결 신경망)과 다른 점은 그림 과 같이 합성곱층(Convolution Layer)와 풀링층(Pooling Layer)이 추가되었다는 점이다. 2. 합성곱 계층 Convolution Layer2.1. 개요 완전연결 신경망이 가진 가장 큰 문제점은 데이터의 형상이 무시된다는 것이다. 예를 들어 MNIST와 같은 이미지 데이터에서는 픽셀들이 서로 밀접한 관련을 갖고 있다. 가령 1이라는 이미지는 아래 또는 위 방향으로 비슷한 픽셀 값을 가질 확률이 높다. 게다가 컬러 이미지는 채널까지 포함하여 3차원 데이터이지만 완전연결 신경망에서는 이러한..
1. mutable vs immutable 파이썬의 오브젝트를 나누는 기준의 하나는 mutable 여부이다. mutable하지 않은 오브젝트는 immutable하다고 한다. mutable 오브젝트는 내용을 수정할 수 있고 immutable한 오브젝트는 그럴 수 없다. mutable한 오브젝트의 대표적인 예는 리스트list 등이 있고 immutable한 오브젝트는 튜플tuple, 문자열string 등이 있다. 리스트와 같은 mutable 오브젝트는 다음과 같이 내용을 수정할 수 있다. lst_1 = [1, 2, 3, 4] lst_1[0] = 100 print(lst_1) # [100, 2, 3, 4] 그런데 아래의 코드는 어떻게 작동 하는 것일까? immutable한 오브젝트는 '내용을 수정 할 수 없다'..
1. 개요 CNN(Convolutional Neural Network)를 아무런 기초없이 구현하려고 하다보니 여러가지 어려움이 있었다. 그러던 중 이라는 책에서 좋은 레퍼런스를 발견하여 그것을 공부하고 있다. 그런데 Backpropagation을 그래프로 해석하는 과정에서 스칼라(scalar)를 매트릭스(matrix)로 미분하는 부분[각주:1]이 쉽게 이해가 가지 않아 따로 정리한다. 어떤 매트릭스 \(C_{p \times k }\)를 \(A_{p \times q}B_{q \times k}\)로 표현할 수 있고, 매트릭스를 스칼라로 보내는 함수 \(f\)가 있어 \(s=f(C)\)일 때, \(s\)에 대한 \(A\), \(B\)의 미분이 각각 다음과 같다. $$\frac{\partial s}{\parti..
1. 개요 TensorFlow를 이용한 모델링은 오랜 시간이 걸릴 수 있다. 경우에 따라서는 한번의 Session으로 학습을 마치기 어려운 경우도 있다. 본 포스팅에서는 학습의 결과인 TensorFlow의 Variable을 저장하고 복원하는 방법을 살펴본다. 아래의 내용은 Udacity에서 발췌하였으며 사용된 코드는 이곳에서 확인할 수 있다. python은 3.5.3, TensorFlow는 1.3.0 사용한다. 2. Saving and Loading Variables 아래는 weights와 bias라는 Variable을 만들고 저장하는 예시이다. # -*- coding: utf-8 -*- import tensorflow as tf # Set random seed to make equal result tf..
1. 개요 나이브 베이즈는 베이즈 정리를 사용하는 확률 분류기의 일종으로 특성들 사이에 독립을 가정한다. 이론이 어렵지 않고 구현이 간단하며 "나이브"한 가정에도 불구하고 여러 복잡한 상황에서 잘 작동하기 때문에 다양한 분야에서 사용되고 있다. 독립변수에 따라 여러가지 모습을 가지지만 이번 포스팅에서는 어떤 메시지가 스팸(spam)인지 또는 정상(ham)인지 분류하는 문제만 고려한다. 2장에서는 나이브 베이즈 분류를 이해하기 위한 배경 지식을 간단하게 훑어보고 3장에서 나이브 베이즈가 어떤 식으로 작동하는지 살펴본다. 4장에서는 나이브 베이즈를 실제 데이터에 적용하여 텍스트 메시지를 분류해본다. 2. 배경 지식 2.1. 베이지안 통계 베이지안 통계에서는 모수 \(\theta\)가 고정된 값을 가지지 않고..
1. 개요 문제는 이곳에서 확인할 수 있다. 어떤 문서를 암호화하기 위하여 XOR 연산을 사용할 수 있다. 예를 들어 A는 아스키코드로 65인데 42와 XOR 연산을 하여 107로 암호화할 수 있다. 여기서 42는 키의 역할을 하며 107과 42를 XOR 연산을 하면 65로 복호화가 된다. 복호화가 불가능하게 하기 위해서는 암호화하는 문장과 같은 길이의 무작위 키로 암호화하면 된다. 하지만 이 방법은 실용적이지 못하기 때문에 기억하기 적당한 길이의 키를 전체 메시지에 대하여 돌아가며 적용한다. 문제에서 주어진 암호문의 키는 영어 소문자 3개라는 것이 알려져 있다. 그 키로 암호문을 해독하고 아스키코드 값의 합을 구하는 것이 문제의 목표이다. 단, 본래의 메시지는 일반적인 영어 문장이다. 2. 구현 26개..
1. 개요 문제는 이곳에서 확인할 수 있다. 아래와 같이 1부터 자연수를 반시계 방향으로 늘어놓자. 37 36 35 34 33 32 31 38 17 16 15 14 13 30 39 18 5 4 3 12 29 40 19 6 1 2 11 28 41 20 7 8 9 10 27 42 21 22 23 24 25 26 43 44 45 46 47 48 49 흥미롭게도 대각 방향에 있는 수 13개는 1을 제외하고 모두 홀수이다. 또한 그 수들 가운데 8개는 소수이다. 위의 예시에서 그 비율은 \(8/13 \approx 62\%\)이다. 처음으로 그 비율이 10%보다 작아졌을 때 변의 길이를 구하는 것이 문제의 목표이다. 2. 구현 중앙의 1을 \(n=1\)이라고 하면 오른쪽 아래 방향의 수는 모두 \((2n-1)^2\..
1. 개요 문제는 이곳에서 확인할 수 있다. \(\sqrt{2}\)는 다음과 같이 표현할 수 있다. $$\sqrt{2}=1+1/(2+1/(2+1/(2+\cdots)))= 1.414213\cdots $$ 4번째까지의 항을 살펴보면 다음과 같다. \(1 + 1/2 = 3/2 \) \(1 + 1/(2 + 1/2) = 7/5 \) \(1 + 1/(2 + 1/(2 + 1/2)) = 17/12 \) \(1 + 1/(2 + 1/(2 + 1/(2 + 1/2))) = 41/29 \) 8번째 항은 \(1393/985\)이며, 이때 처음으로 분자의 자리수가 분모의 자리수보다 크게 된다. 1,000번째 항 내에서 분자의 자리수가 분모의 자리수보다 큰 항의 수를 구하는 것이 문제의 목표이다. 2. 구현 각 항에서 1을 제외하고..