2020/10/23 - [Study/인공지능] - Optimizer : Momentum, NAG ( 인공지능 기초 #14 ) learning rate가 변수마다 스텝마다 바뀝니다. 처음 시작점부터 최소점까지는 멀기 때문에 성큼성큼가다가 (보폭을 크게) 시간이 지나면 점점 목적지에 다가가게 되니까 보폭을 작게 조정합니다. 큰 변화를 겪은 변수의 러닝레이트는 크게 작아지고, 작은 변화를 겪은 변수의 러닝레이트는 작게 작아집니다. ( 이유는 x 와 y가 있을때 x축으로 더 크게 이동했다면, y축은 아직 먼 가능성이 높고 x축은 목표에 가까워 졌을 가능성이 높아졌다고 보기 때문입니다. ) Hadamard product 라는 기호입니다. 연산은 아래와 같습니다 ( 각 행렬의 위치를 덧셈처럼 위치마다 곱한값이 결과..
2020/10/22 - [Study/인공지능] - Optimizer: SGD ( 인공지능 기초 #13 ) 물리계에서는 공이 굴러가는 방향은 중력뿐 아니라 기존의 관성에도 영향을 받습니다. Momentum은 현실 물리계에서 관성이 모티브입니다. Momentum은 Gradient Descent에 현재의 관성을 추가하여 생각합니다. 경사하강법의 문제점 현실에서 실제로 공을 굴렸다고 생각한다면, 첫번째 로컬 미니멈의 최소에 멈추지않고 관성을따라 오른쪽으로 더 움직였을 것입니다. (즉 글로벌 미니멈에 다가갈 수 있습니다.) 이러한 관성의 특징으로 안장점에서도 멈추지않고 글로벌 미니멈을 향해 다가갈 수 있습니다. 등위선에서도 SGD보다 더 효율적으로 (적은 진동으로) 목표지점에 다가가는 것을 볼 수 있습니다. 이유..
MNIST는 머신러닝 계의 printf("hello world") 라고도 할 수 있습니다. MNIST 데이터셋은 0부터 9까지의 손글씨 이미지로 구성되어 있습니다. 머신러닝은 데이터를 훈련 데이터, 테스트 데이터로 나눕니다. 또는 세가지 훈련 데이터, 테스트 데이터, 벨류 데이터로 나누기도 합니다. 머신러닝에는 훈련 데이터와 테스트 데이터를 절대 섞지 않는다 라는 원칙이 있습니다. 이게 섞이면 신뢰도에 문제가 생기기 때문입니다. 각 데이터는 이미지와 라벨로 이루어져 있습니다. ( 이미지는 손글씨 사진, 라벨은 그 숫자가 무엇인지 적혀있는 곳 ) 각 이미지는 28*28 해상도의 흑백 사진 입니다. 각 픽셀은 0에서 255로 밝기를 표현합니다. 우리는 인공신경망에 이 훈련데이터를 넣어서 학습을 시킵니다. 그..
앞으로는 -임계점 대신 편향을 사용합니다. 앞으로는 임계점보다 높으면 1, 임계점보다 낮으면 0 이라는 정보를 Heaviside 함수로 표현합니다. 즉 y = h(w1x1 + w2x2 + b) 와 a=w1x1+w2x2+b 는 같은 수식입니다. a의 값이 0보다 크면 1, a의 값이 0보다 작거나 같으면 0으로 합니다. Heaviside 함수를 Sigmoid함수로 바꿉니다. 머신러닝은 데이터를 넣으면 머신이 스스로 학습을 하는 개념입니다. 이때 미분을 통해서 학습을 합니다. 여기서 Heaviside 함수를 미분한다면, 미분값이 0을 제외한 함수에서 모든 값이 0으로 나오기 때문에 머신러닝을 할 수 없는 함수입니다. 그래서 우리는 Heaviside 함수 대신 Sigmoid 함수를 사용합니다. 앞으로 자주 사..
전 게시글에서는 하나의 퍼셉트론 (단층 퍼셉트론) 으로 표현할 수 있는 3가지 (AND, NAND, OR) 논리회로를 표현해 보았습니다. 2020/09/13 - [Study/인공지능] - 퍼셉트론 AND, NAND, OR 논리회로 표현하기 ( 인공지능 기초 #2 ) 이번에는 하나의 퍼셉트론으로는 만들 수 없는 XOR 게이트를 알아보겠습니다. [다층 퍼셉트론 이용] XOR 게이트는 배타적 논리합이라는 논리회로 입니다. 입력값이 둘중 한개만 1일때만 1 (true)를 출력합니다. 왜 단층 퍼셉트론으로는 구현 할 수 없을까요? 앞에서 구현해 보았던 OR 게이트의 경우 좌표로 나타내면 아래와 같이 나타납니다. 하지만 xor 같은 경우는 0,0 1,1 일 경우 false 0,1 1,0 일 경우 true 입니다. ..