인공지능 8

신경망 학습 : 손실함수, 활성화함수, 파라미터

활성화함수 활성화함수는 신경망으로 계산한 입력신호의 모든 합을 각 함수식에 맞게 처리해 출력값으로 변환해주는 역할을 한다. 활성화함수를 사용하는 이유는, 출력값을 비선형의 형태로 바꾸기 위해서이다. 비선형으로 만들어주는 이유는 선형 구조에 문제가 있기 때문이다. 여러개의 선형식 레이어를 아무리 쌓아도 하나의 선형식으로 표현할 수 있기에 비선형 함수를 사용해주어야 한다. 라고 하는데 사실 이해가 완벽하게 되지 않았다. 히든 레이어에서 가중치와 노드값, 편향값들을 어떻게 더하고 곱할지 구성하고 계산하는 것만으로는 비선형식을 만들 수 없는 것일까? 이 부분이 더 궁금해서 찾아보았다. 그리고 그 예측이 맞았다. Geeks for Geeks 라는 해외 사이트에서 활성화함수에 대해 설명한 글을 찾아보았는데, "A ..

편미분 그라디언트 함수 구현 - 기울기, 경사법

모델을 학습할때 보통 손실함수의 값이 적어지는 것을 지표로 학습한다. 손실함수 loss 값은 모델의 예측값과 실제 레이블값이 얼마나 떨어져있는지를 보통 나타내기 때문이다. 그럼 손실함수의 최솟값을 구하려면 어떻게 해야할까. 여러 방법 중 하나는 손실함수를 미분해서, 기울기를 구한다음 그 기울기가 0 이라면 해당 함수의 최솟값을 구할 수 있을 것이다. 그렇기 때문에 모델 학습을 위한 과정 중, 미분 함수에 대해 이해하고 구현할 필요가 있다. 다음의 단순한 미분함수를 수식으로 구현하면 문제가 발생한다. 왜냐하면,,, 컴퓨터로 lim x→0 을 표현하기 어렵기 때문이다. 예를 들어 0 에 가까운 아주 작은 수 1e-50 을 파이썬에서 32비트 부동소수점 즉 float32 형으로 나타내려 하면 0이 되어버린다...

배치용 교차 엔트로피 오차 구현하기

밑바닥부터 시작하는 딥러닝 교재에서 미니배치로 학습할 시의 교차 엔트로피 오차 함수를 구현하면서, 이해되지 않았던 부분을 정리했다. 현재 데이터셋의 shape 은 train_x : (60000, 748) , train_y : (60000, 10) 이다. 미니배치 10의 사이즈로 학습하므로 한번 학습할 때의 학습, 평가 셋의 크기는 minibatch_train_x : (10, 784), minibatch_train_y : (10, 10) 에 해당한다. 첫번째, 예측값과 레이블이 원 핫 인코딩으로 주어지는 경우 위와 같이 예측값 p 와 레이블 y 가 원 핫 인코딩의 shape으로 미니배치로 주어질 때 다음과 같이 구현할 수 있다. # y, p 의 형태가 원 핫 인코딩인 경우 def cross_entropy(..

신경망 학습

학습이란 학습이란 모델이 정답을 찾을 수 있는 가장 알맞는 매개변수들을 찾아나가는 과정 학습의 지표와 목표 모델이 최적 매개변수를 찾아나가기 위해서 사용하는 기준 = 손실 함수 손실 함수는 오답일 때 그 값이 커지므로 손실 함수값을 작게 만들 수 있는 매개변수를 만들어야 함 기계학습 vs 딥러닝 예를 들어 이미지 데이터를 학습할 때, 기계학습은 사람이 이미지 데이터의 특징을 먼저 파악해 이미지를 어떻게 효율적으로 벡터로 표현할 수 있을지 설계하고 이 벡터를 다시 기계가 특정 알고리즘을 통해 학습한다. 반면에 딥러닝은 사람이 데이터의 특징을 파악하는 과정이 생략된 것이다. ( = 종단간 기계학습 : 처음부터 끝까지 사람이 개입하지 않고, 기계가 학습하는 것 ) 오버피팅 모델을 학습할 때, 학습 데이터에만 ..

밑바닥부터 시작하는 딥러닝 : MNIST 데이터 Google Colab 에서 로드하기

MNIST 데이터를 Google Colab 으로 로드하는 방법 ? 밑바닥부터 시작하는 딥러닝 교재의 3장에서 MNIST 데이터를 사용해 손글씨를 인식하는 실습이 있다. 책은 로컬 컴퓨터에서 실습 폴더를 가져와 사용하는 방법을 설명하고 있으므로, 코랩에서 그대로 코드를 실행하려고 하면 에러가 나며 실행이 불가하다. 그래서 코랩에서 이를 실행하려면 다른 방법을 사용해야한다. 첫번째 방법. 넘파이 reshape 활용 어차피 책에서 인터넷의 mnist 데이터를 똑같이 끌어다 사용하는 것이므로 다른 곳에서 제공하는 데이터셋을 다운한다. 케라스 라이브러리를 활용하면 쉽게 다운받을 수 있다. from keras.datasets import mnist​ (train_X, train_y), (test_X, test_y)..

신경망과 퍼셉트론, 그리고 활성화 함수

신경망 신경망은 입력층, 은닉층, 출력층으로 이루어짐 입력 신호를 받아서 은닉층에서 연산하고, 이를 출력하는 구조 활성화 함수 활성화 함수란 입력층, 은닉층을 통해 계산된 값을 출력값으로 만들어내는 함수 특정 기준이나 함수를 가지고 출력물을 어떻게 뱉어낼지 정의한다. 계단 함수 앞에서 공부한 퍼셉트론에서 사용되었던 활성화 함수 특정 임계값을 넘느냐, 넘지 않느냐에 따라 0, 1의 출력값을 뱉어낸다. 시그모이드 함수 계단 함수와는 다르게 exp 연산을 함께 사용하여, 0, 1 의 값이 아닌 연산 후의 실수 값을 뱉어낸다. 렐루 함수 입력값이 0 보다 작으면 0을, 그렇지 않으면 입력값 그 자체를 돌려주는 함수이다. 퍼셉트론과 신경망의 차이? 퍼셉트론과 신경망의 차이는 활성화 함수이다. 퍼셉트론은 계단함수와..

퍼셉트론이란?

( 단순 ) 퍼셉트론 알고리즘 여러 신호를 받아 머시깽이 연산을 하고, 그것을 하나의 출력 ( 0 / 1 ) 으로 나타내는 알고리즘입니다. 인공 신경망의 기초 개념이 되어 사용되고 있습니다. 노드 / 뉴런 퍼셉트론 알고리즘을 표현할 때, 원으로 표현하는 부분입니다. 예시로 x1, x2, x3.... 와 같은 입력값이 있습니다. 가중치 퍼셉트론 알고리즘을 계산시 입력 노드에서 받아온 x1, x2... 등의 입력값에 가중치 w1, w2... 를 곱한 후 결과값을 출력합니다. 임계값 특정 임계값 θ ( theta ) 를 정해놓고, 가중치 합이 임계값을 넘느냐 넘지 않느냐에 따라 결과값 0, 1 를 출력합니다. 학습이란 ? 학습이란, 원하는 출력값을 얻기 위한 최적의 가중치값와 임계값 즉, 매개변수 값을 찾아나..