오늘은 앞서 공부한 Neural Network 개념을 기반으로 두 가지 문제에 대해 실습해보려 합니다! 한 가지는 기존의 방법으로 풀리지 않았던 XOR 문제이고 다른 한 가지는 MNIST숫자 데이터를 분류하는 숫자 분류기입니다. XOR연산은 다음과 같습니다. 각각의 x와 y데이터를 위와 같이 나타 낼 수 있습니다. 우선 일반적인 접근 방법으로 풀어볼까여? 위 방법은 뉴럴넷을 배우기 전에 사용하던 방식으로 OR나 AND 같은 연산에서 잘 작동하는 모델입니다. 하지만 위 코드를 돌려보면, 정확도가 0.5로 제대로 학습되지 않는 것을 확인해 보실 수 있습니다. 그럼, NN을 적용해 볼까요? 정말 간단한 문제기에 아래와 같이 하나의 레이어만 추가 해주면 됩니다 !ㅎㅎ Wide하고 Deep 하게 구성할 필요도 없..
Training Data & Validation Data & Test Data 트레이닝 셋으로 학습시킨 후 트레이닝셋으로 테스트 하면 공정한가? -> 나쁜 방법 데이터의 70퍼센트정도는 트레이닝 셋, 30퍼센트정도는 테스트 셋으로 설정 테스트셋으로 예측값과 실제값 비교하여 성능 측정 트레이닝 셋을 또 validation set으로 나눌 수 있음 validation set -> 모의 시험 느낌 (알파, 람다등을 조절 하기 위해) 데이터셋이 굉장히 많은 경우 ->online learning 학습 방법 만약 트레이닝셋이 100만개 있다고 가정, 한 번에 넣어서 학습시키기에 너무 양이 많다 ->100만개의 데이터를 잘라 10만개씩 학습 우리는 선형회귀부터 시작해서 Softmax회귀까지 트레이닝 데이터셋을 테스트..
이제 본격적으로 인공신경망을 공부하기 전에 여러 개념들을 정리하고 넘어가 볼까 합니다. :) 머신러닝 프로세스 학습하고자 하는 가설(Hypothesis)을 수학적 표현식으로 나타내기 가설의 성능을 측정할 수 있는 손실함수 정의하기 손실함수를 최소화할 수 있는 학습 알고리즘 설계하기 gradient descent - 경사 하강법 (경사를타고 내려가는 알고리즘, 매 스텝마다 미분값 계산) Batch Gradient Descent - 전체 트레이닝 데이터를 하나의 Batch로 만들어 사용, 트레이닝 데이터 개수가 매우 많아질 수 있고, 파라미터 한 스텝을 업데이트 하는데 굉장히 많은시간이 소모 -> 최적의 파라미터를 찾는데 오랜 시간소모 Stochastic Gradient Descent - 한 스텝을 업데이트..
로지스틱 회귀와 연결되는 내용이라 할 수 있는 Softmax에 대해 정리해보려 합니다. :) 기존 로지스틱 분류가 이진 분류 (0과 1, 참 거짓) 라면 소프트맥스는 여러개를 분류하는 함수 입니다. 만약 세가지 경우의 수를 비교한다고 했을때, 로지스틱 회귀로도 세가지의 경우를 예측가능 합니다. 만약 각각 A라는 경우, B라는 경우, C라는 경우가 있다고 했을 때, 이진분류로 분별한다 하면 다음과 같이 나타내면 됩니다. A인 경우와 A가 아닌 경우 B인 경우와 B가 아닌 경우 C인 경우와 C가 아닌 경우 감이 잘 안오신다면, 그래프로 한번 그려봅시다! 이를 식으로 나타내면, 다음과 같이 행렬곱으로 나타낼 수 있고 각각의 경우에 대한 예측값을 시그모이드함수를 거쳐 1 혹은 0으로 나타내면 여러개의 경우의수도..
오늘은 Logistic regression (로지스틱 회귀)를 정리해 보려고 합니다. 제가 정리하는 모든 머신러닝 딥러닝 내용은 sung kim님의 유튜브 모두의딥러닝 시즌1 강의와 텐서플로로 배우는 딥러닝 책을 기반으로 합니다. :) https://www.youtube.com/watch?v=BS6O0zOGX4E&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm Linear regression이 선형적인 데이터를 예측하는데 사용되었다면, Logistic regression은 이진분류를 하는데 사용 됩니다. 메일에서 스팸메일인지 아닌지 구분하는것 처럼 두 가지 케이스로 구분해야 하는 경우에 사용됩니다. 시험 성적의 pass/fail 도 좋은 예가 될 수 있죠 ㅎㅎ 시험성적을 예로 그래..
오늘 공부 해 볼 내용은, 앞서 배운 선형회귀의 연장선상에 있는? 내용입니다. 차이점이라고 하면, 앞서 배운 선형회귀는 변수 x가 한 개였다면, 지금은 여러개의 변수를 갖는 선형회귀 입니다. Hypothesis로 보자면, H(x) = wx + b 에서 H(x) = w1x1 + w2x2 + w33.. + b가 되는 것이죠. 방법은 간단합니다. 데이터가 늘어난 만큼 weight과 x의 갯수를 늘려주면 되니까요. 한번 코드로 살펴 볼까요? (참고로 지금 살펴 볼 코드는 나쁜 방법입니다.) import tensorflow.compat.v1 as tf tf.disable_v2_behavior() # 나쁜 방법 x1_data = [73., 93., 89., 96., 73.] x2_data = [80., 88., 9..
오늘은! 머신러닝 모델에서 가장 기본적이고 기초적이라 할 수 있는 선형회귀 모델을 공부해보려 합니다 별로 어렵지 않는내용이면서 재밌게 공부할 수 있어요! 먼저 선형회귀에대해 공부하기 전에, 머신러닝 모델 개발은 다음과 같은 프로세스를 거치게 됩니다. 학습하고자 하는 가설(Hypothesis)을 수학적 표현식으로 나타냅니다. 가설의 성능을 측정할 수 있는 손실함수(Cost Function 혹은 Loss Function)을 정의합니다. 손실함수를 최소화 할 수 있는 알고리즘을 설계합니다. 저는 머신러닝을 공부하기 전에, 도대체 어떻게 컴퓨터가 학습을 하는걸까? 라는 의문을 품고 있었습니다. 이에 대한 답은!! 비용함수(손실함수)를 최소화 하도록 만드는 것이였는데요. 말로만 들어서는 이해가 잘 안가실 수 있지..
신경과학에 대한 간단한 설명(시스템 레벨의 뇌 연구) 시냅스나 피질자체의 구체적인 작동원리 보다는 뇌가 사용하는 알고리즘, 개념의 묘사, 종합적 구성의 계층적 시스템보다 상위 수준에서 일어나는 뇌의 계산 원리에 더 관심이 많다 이유: 뇌를 새로운 알고리즘을 디자인 할 수 있는 씨앗으로 보는 것이 중요하다고 생각하기 때문. 그 알고리즘이 실리콘 재질인 컴퓨터에서 구현되는 방법이 두뇌에서 응용되는 방법과는 다를것이다. 그렇기에, 뇌의 세부적인 동작 하나하나를 그대로 모방하는 접근 방법은 좋지 않다고 생각 한다. 딥마인드 팀이 신경과학에서 연구하는 분야는 기억,주의,추상적 지식과 같은 개념, 계획, 네비게이션 그리고 상상력에 관한 것들.. 뇌에서 해마(Hippocampus)는 여기에 언급한 많은 기능들과 매우..