라벨이 Machine learning인 게시물 표시

Stochastic Gradient Descent

이미지
Stochastic Gradient Descent(SGD)를 알아보겠습니다. ​ Stochastic Gradient Descent는 우리나라 말로 확률적 경사 하강법이라고 부릅니다. 해당 개념은 Mini Batch Gradient Descent와 동일합니다. 다만 Mini Batch Gradient Descent와 다른 점은 Batch Size(크기)가 1이라는 겁니다. ​ 10,000 개의 데이터가 있다고 한다면, 데이터 1 개씩을 넣어서 Gradient Descent를 진행합니다. 그래서 이 방법은 Cost 함수가 수렴하지 않고 계속해서 움직입니다. 데이터 하나에 대한 Cost 함수이기 때문에 한곳에 모일 수가 없습니다. 데이터 하나씩 계산하기 때문에 속도가 빠르긴 하지만, 이 하나씩 구한 것을 다시 Vectorization(1 차원 행렬화) 할 때 오랜 시간이 걸려서 그다지 이점이 있지는 않습니다. 그리고 Cost의 Minimum에 머물러 있다는 보장이 없습니다. ​ ​ 끝. 카테고리: Machine Learning

Mini Batch Gradient Descent

Mini Batch Gradient Descent를 알아보겠습니다. ​ Mini Batch Gradient Descent는 Gradient Descent의 한 종류입니다. ​ 우리가 일반적으로 사용하는 Gradient Descent는 Batch Gradient Descent라고 부르기도 합니다. Batch Gradient Descent는 가지고 있는 모든 데이터를 한 번에 학습시키는 것을 말합니다. 10,000 개의 자료가 있다면, 10,000 개를 전부 입력 데이터로 넣는 것이죠. ​ Mini Batch Gradient Descent는 일부분씩 나눠서 넣는 것입니다. 10,000 개의 자료가 있다면, 24 개씩 넣는 것처럼 전체 데이터를 작게 나눠서 넣은 후, 작은 부분들의 Gradient Descent를 진행하는 것입니다. 이렇게 하면 좋은 점은, 전체 데이터를 집어넣고 학습하는데 걸리는 시간보다 짧다는 것입니다. ​ Mini Batch에 사용하는 크기는 2의 배수로 많이 사용합니다. 컴퓨터 메모리가 2의 배수이기 때문이죠. 24, 32, 64, 128, 256, 512. 1024 등... ​ CPU와 GPU의 메모리에 알맞은 크기가 아니라면 속도는 느려질 것입니다. 그래서 적절한 크기를 찾는 게 좋습니다. ​ ​ 끝. ​ 카테고리: Machine learning

Softmax Regression

이미지
Softmax Regression을 알아보겠습니다. ​ Softmax Regression은 다중 분류(Multi-class classification)에 사용됩니다. ​ Class(분류하는 것)가 4 개라면, Softmax Regression을 통해 나오는 값의 개수도 4 개입니다. 예를 들어 고양이, 강아지, 병아리, 오리를 Class로 분류해야 한다면, Softmax Regression의 값 또한 [x, x, x, x]로 나옵니다. ​ Softmax의 값은 각 해당하는 함수의 확률을 나타냅니다. 아래의 예에서 첫 번째 위치는 고양이일 확률, 두 번째 위치는 강아지일 확률, 세 번째 위치는 병아리일 확률, 마지막 번째 위치는 오리일 확률입니다. Softmax의 값은 소수점으로 표현됩니다. 그래서 이름이 Softmax로 명명되었습니다. Hardmax의 경우는 큰 것이 1 나머지가 0으로 표기되기 때문입니다. 그리고 Softmax의 특이한 점은 모든 값의 합이 1이 된다는 점입니다. 0.1 + 0.1 + 0.7 + 0.1 = 1 ​ ​ Softmax가 어떻게 구해지는지 알아보겠습니다. 먼저, 각 각의 경우에 대해서 Linear Regression을 합니다. 그럼 해당 값이 나옵니다. 여기서 나온 z를 activation function(활성 함수)에 넣습니다. 활성화 함수에 넣기 전에 약간의 계산이 필요합니다. e의 z 제곱을 임시 변수 t로 저장합니다. 이 t를 활용하여 activation function을 만듭니다. 아래에 Cat(고양이)으로 예시를 들어보겠습니다. ...

Logistic Regression

이미지
Logistic Regression을 알아보겠습니다. ​ Logistic Regression은 Binary Classification(이진 분류)에 쓰이는 Regression입니다. 왜냐하면, Linear Regression에서 나온 값을 0~1 사이로 만들어 확률처럼 쓸 수 있게 해줍니다. ​ Logistic Regression에 사용되는 Activation Function(활성 함수)는 Sigmoid입니다. Sigmoid를 표현할 때에는 σ(시그마)로 표현합니다. 여기서 Z는 linear Regression에서 나온 값입니다. 즉 Z = wx + b Z가 ∞(무한대)이 된다면, 1처럼 됩니다. Z가 0이 된다면, 0처럼 됩니다. ​ ​ Logistic Regression의 Cost Function은 다음과 같습니다. Binary Classification에 사용되기 때문에 예상한 것이 맞을 경우와 틀릴 경우 두 가지로 나눠집니다. log 0의 경우 -∞(무한대)가 나옵니다. - log 0의 경우 ∞(무한대)가 나옵니다. ​ Loss function은 이렇게 틀릴 경우에는 ∞(무한대)가 나오고, 맞을 경우에는 0이 나오게 되어 학습에 도움을 줍니다. ​ ​ 아래는 Cost 함수입니다. Cost 함수는 J로도 표현합니다. m은 입력 데이터의 개수입니다. ​ ​ 끝. ​ 카테고리: Machine learning

Gradient Descent

이미지
Gradient Descent를 알아보겠습니다. ​ Gradient Descent는 한국말로 경사 하강법이라 부릅니다. Cost 값이 최소가 되는 부분을 찾아 계속해서 내려가기 때문인데요. z = wx + b에서 이 z에 대한 Cost 값을 구합니다.  아래는 linear Regression에 대한 Cost Function입니다. 여기서 Y hat이 z와 동일합니다. ​ Cost 값을 W로 미분한 것을 이용합니다. Gradient Descent의 식은 다음과 같습니다. 여기서 w뿐만 아니라 b도 식이 있지만, 생략하도록 하겠습니다. 여기서 α는 learning rate라고 하며, 사용자가 조절하는 hyperparameters입니다. ​ ​ W가 최소가 되는 지점은 dW가 0이 되므로 더 이상의 W 하강은 없게 됩니다. 그래서 Gradient Descent는 최저점을 찾는 알고리즘이라고 할 수 있습니다. ​ 하지만, W가 저렇게 간단하지 않은 경우는 문제가 됩니다. 이 경우, local minimum과 global minimum이 다르게 되기 때문입니다. 즉, 정말 Cost가 낮은 W는 다른 곳에 있는데, local minimum에 갇혀 더 이상 학습이 되지 않는 것을 말합니다. ​ ​ 끝. 카테고리: Machine learning

Linear Regression

이미지
Linear Regression을 알아보겠습니다. ​ Linear Regression은 전체 데이터를 대표하는 성질을 가진 직선을 말합니다. 직선이기에 y = ax + b와 같은 수식으로 표현할 수 있습니다. 예측되는 값이 범위를 가질 때 사용합니다. 예를 들어 성적 예측의 경우 예측 범위는 0 ~ 100 사이의 값이 나와야 할 것입니다. ​ 우리가 Linear Regression을 구하는 이유는 Cost Function의 값을 구하기 위해서입니다. 이렇게 구한 Cost Function을 낮추는 것이 우리의 최종 목표입니다. ​ Linear Regression y = wx + b에서 Loss 값은 다음과 같이 구할 수 있습니다. 위와 같이 ^가 있는 것을 y hat(y 햇)이라고 읽습니다. 모자를 썼다는 표현이군요. y hat은 컴퓨터가 추측한 값이고, y는 Label된 정답 값을 말합니다. ​ Linear Regression y = wx + b에서 Cost 값은 다음과 같이 구할 수 있습니다. n은 입력 데이터의 개수입니다. 10 개의 데이터가 있으면 10 개의 Loss 가 생기고, 이것을 평균 낸 것이 Cost입니다. 보통 미분을 편하게 하기 위해서 나누기 2를 추가해 줍니다. 기본 표기는 L(W, b)이고 b도 포함되어야 하지만, b의 영향은 미미하므로 생략을 많이 합니다. ​ ​ ​ 끝. 카테고리: Machine learning

What is Machine learning

What is Machine learning를 알아보겠습니다. ​ 머신 러닝은 프로그래밍의 한계로 인해 연구되기 시작했습니다. 개발자가 정하는 것이 아니라 컴퓨터가 학습하여 결과물을 도출하도록 만듭니다. ​ Supervised learning은 레이블(답안)이 있는 training 데이터로 학습하는 것을 말합니다. 예로는 고양이냐 강아지냐, 오늘의 날씨, 부동산 가격 예측 등이 있습니다. ​ Unsupervised learning은 레이블(답안)이 없는 training 데이터로 학습하는 것을 말합니다. 예로는 그룹을 나누거나, 군집화하는 것 등이 있습니다. ​ ​ Supervised learning에는 Regression(회귀), binary classification(이진 분류), multi-label classification(다중 분류)가 있습니다. ​ ​ 끝. 카테고리: Machine learning

머신러닝 데이터 전처리

이미지
머신러닝 데이터 전처리에 대해서 알아보겠습니다. ​ 학습이나 실제 데이터의 범위가 너무 넓고 다듬어지지 않으면, 학습이나 예측에 어려움을 줍니다. 그래서 우리는 데이터에 적절한 전처리를 해주어야 합니다. ​ 한글 설명은 제가 적은 거라 어색할 수 있습니다. ​ ​ 끝. ​ 카테고리: Machine learning

머신러닝 loss와 cost 함수

이미지
머신러닝 loss와 cost 함수에 대해서 알아보겠습니다. ​ Loss는 예측한 값과 정답 값과의 차이를 나타내는 값입니다. 함수로 표현은 다음과 같이 됩니다. ​ ​ ​ Cost는 Loss들의 평균입니다. Cost가 최종 정확도와 비교됩니다. ​ ​ 끝. 카테고리: Machine learning