loss function 5

[머신러닝 - 이론] 경사 하강법 (Gradient Descent)

1. 경사 하강법의 정의 경사 하강법(傾斜下降法, Gradient descent)은 1차 근삿값 발견용 최적화 알고리즘이다. 기본 개념은 함수의 기울기(경사)를 구하고 경사의 반대 방향으로 계속 이동시켜 극값에 이를 때까지 반복시키는 것이다. -위키 백과- 만약 본인이 한 치 앞도 보이지 않는 상황에서 산을 내려가야 하거나, 올라가야 한다면 어떻게 해야할까요? 시각적으로 멀리 있는 산 꼭대기가 보이지 않기 때문에 단순히 근처의 지형을 가지고 판단을 내려야 합니다. 그러므로 현재 위치에서 가장 경사가 높은 곳, 그 곳으로 계속해서 움직이면 '보통'의 경우 산의 정상에 도달 할 수 있습니다. 이는 경사 상승법이라고 하며, 정 반대의 방법으로 계속해서 가장 낮은 곳으로 이동하는 것이 경사 하강법이라고 할 수 ..

[머신러닝 - Python] 손실 함수 - 배치 교차 엔트로피 오차 구현 (Loss Function - Batch Cross Entropy Error Implementation)

cross entropy error의 핵심은 정답에 해당하는 확률 값만 계산한다는 점입니다. 원-핫 인코딩 방식일 때의 코드를 보면 return -np.sum(target * np.log(pred + 1e-7)) / batch_size 라는 코드가 있는데, 이때 target을 log에 곱하는 모습을 볼 수 있습니다. 즉, 원-핫 인코딩 방식이므로 정답에 해당하는 인덱스만 1이고, 나머지 인덱스는 0입니다. 따라서 정답에 해당하는 인덱스를 k라고 한다면, pred[k]의 값만 log취해서 계산합니다. 1 * np.log(pred[k])가 되므로 k에 해당하는 에러율만 나타내고, 나머지 인덱스는 계산하지 않습니다. 마찬가지로 레이블 방식일 때를 보면, return -np.sum(np.log(pred[np.a..

[머신러닝 - Python] 손실함수 - 오차제곱합, 교차엔트로피 합 구현 (Loss Function - Sum of Squares Error, Cross Entropy Error Implementation)

import numpy as np def sum_squares_error(pred, target): # 오차제곱합 return 0.5 * np.sum((pred - target) ** 2) def cross_entropy(pred, target): # 교차 엔트로피 합 delta = 1e-7 # log 0을 계산할 수 없으므로, 아주 작은 값을 넣음 return -np.sum(target * np.log(pred + delta)) if __name__== "__main__": target = np.array([0, 0, 1, 0, 0]) # 2가 정답 pred1 = np.array([0.1, 0.05, 0.6, 0.05, 0.2]) # 2 예측 pred2 = np.array([0.6, 0.1, 0.05,..

[머신러닝 - 이론] 지금까지의 내용 정리

지금까지 내용을 간략히 정리하고 가겠습니다. 인공지능 : 인간의 지능이 가지는 학습, 추리, 논증 따위의 기능을 갖춘 시스템 인공지능은 강한 인공지능과 약한 인공지능으로 나뉜다 인공지능의 접근 방법 과학적 : 인간의 지능을 충분히 연구한다음 그 원리를 충실히 모방하는 기계 제작 공학적 : 쓸만한 지능 기계를 만들 수 있다면 인간의 지능 원리를 따르지 않아도 됨 규칙 기반 방법론 : 사람이 사용하는 규칙을 수집하여 프로그래밍(if-else) 하지만 규칙을 위반하는 샘플이 발생함 기계 학습 방법론 : 충분한 데이터를 수집 -> 기계가 스스로 규칙을 찾아내 학습하는 방법 딥러닝 방법론 : 기계 학습은 특징까지 수작업으로 알아내야하지만, 딥러닝은 특징마저 스스로 알아냄 머신러닝의 데이터의 중요성 데이터가 없으면..

[머신러닝 - 이론] 딥러닝 - 인공 신경망, 퍼셉트론과 학습 방법 (DeepLearning - Artificial Neural Network, Perceptron, Learning Method)

이제부터 머신러닝의 꽃인 딥러닝에 대해 알아보겠습니다. 사실 제 생각엔 딥러닝을 하기 전에 지도, 비지도 학습을 먼저 공부하고, 수학적 이론을 쌓은 다음에 공부해야 하는 게 맞다고 생각합니다. 근데 시험 공부랑 겹쳐서... 어쩔 수 없이 딥러닝을 먼저 하게 되네요... 추후에 다른 머신러닝 알고리즘도 올리겠습니다. 1. 인공 신경망이란? 인간의 뇌는 신경의 망들로 이루어져 있습니다. 뉴런은 뇌의 정보처리 단위입니다. 처리한 정보를 다른 뉴런으로 옮기고, 받은 뉴런은 자신이 연산을 처리하고 또 다른 뉴런에게 보냅니다. 인간의 뇌는 고도의 병렬 처리기입니다. 하지만 컴퓨터는 아주 빠른 순차 명령 처리기죠. 아무튼 인공 신경망은 생물의 신경망에서 원리를 얻었지만, 실제 구현은 많이 다릅니다. 인공 신경망을 A..