여태 모델을 학습시키고 학습 정도나 정확도등을 확인해볼 때, 조금 원시적인(?) 방법이라 할 수 있는 print로 출력해 왔었습니다. 이렇게 확인 해도 되겠지만, 더 좋은 그리고 더 쉽게 시각화하여 정보를 볼 수 있는 방법이 있습니다. 바로 텐서보드 인데요. 기존에 비용 함수를 프린트해가며 줄어드는 것을 확인했다면, 텐서보드를 이용해 아래와 같이 시각화 해서 확인해 볼 수 있습니다. 텐서보드를 사용하기 위해서는 시각화를 하고 싶은 변수에 대한 요약 정보를 저장하는 코드를 추가해줘야 합니다. 1. 로그를 확인하고 싶은 변수에 대한 요약정보를 저장하기 위한 코드 w2_hist = tf.summary.histogram("이름", 변수) # 히스토그램 cost_summ = tf.summary.scalar("이름..
No module named 'tensorflow.examples.tutorials' 이 오류는 tutorials폴더가 존재하지 않기 때문에 발생하는 오류인데요. 저는 Mnist 데이터셋을 가져와 실습을 하는 과정에서 맞닥뜨리게 되었습니다 ㅜㅜ 아마 저처럼 비교적 최근 텐서플로우를 설치하여 공부를 시작하신 분들은 같은 오류를 맞닥뜨리시지 않을까 싶습니다. 이 오류를 해결하기 위해서는, 직접 텐서플로우 깃허브(https://github.com/tensorflow/tensorflow)에 가서 Clone or download 버튼을 통해 다운받으신 후 tensorflow - examples 폴더 하위에 있는 tutorials 폴더를 파이썬이 설치된 폴더의 Lib/site-packages/tensorflow_..
오늘은 앞서 공부한 Neural Network 개념을 기반으로 두 가지 문제에 대해 실습해보려 합니다! 한 가지는 기존의 방법으로 풀리지 않았던 XOR 문제이고 다른 한 가지는 MNIST숫자 데이터를 분류하는 숫자 분류기입니다. XOR연산은 다음과 같습니다. 각각의 x와 y데이터를 위와 같이 나타 낼 수 있습니다. 우선 일반적인 접근 방법으로 풀어볼까여? 위 방법은 뉴럴넷을 배우기 전에 사용하던 방식으로 OR나 AND 같은 연산에서 잘 작동하는 모델입니다. 하지만 위 코드를 돌려보면, 정확도가 0.5로 제대로 학습되지 않는 것을 확인해 보실 수 있습니다. 그럼, NN을 적용해 볼까요? 정말 간단한 문제기에 아래와 같이 하나의 레이어만 추가 해주면 됩니다 !ㅎㅎ Wide하고 Deep 하게 구성할 필요도 없..
앞서 머신러닝에 대해 배웠다면, 이제 본격적으로 딥러닝에 대해 공부해 볼 시간입니다! 딥러닝 하면 많이 들어봤을 CNN RNN을 공부하기에 앞서, ANN, 즉 인공신경망이 뭔지 짚고 넘어가려 합니다. ANN은 Artificial Neural Network의 약자로, 인공신경망을 의미합니다. 인공신경망은 그 이름에서 알 수 있듯이, 뇌에서 영감을 받은 학습 알고리즘 입니다. 각각의 뉴런이 다음 뉴런으로 다양한 세기의 신호를 보내면서 문제를 해결하는 시스템을 모방한 것이죠. 하나의 뉴런이 다양한 뉴런으로부터 신호를 받고 다음 뉴런으로 신호를 보내듯이, ANN역시 똑같은 매커니즘을 거칩니다. 다양한 input data를 받아 각각의 가중치가 곱해지고 bias가 더해져 다음 노드로 전달되는것이죠. 이런 뉴런을 ..
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)을 정의합니다. 손실함수를 최소화 할 수 있는 알고리즘을 설계합니다. 저는 머신러닝을 공부하기 전에, 도대체 어떻게 컴퓨터가 학습을 하는걸까? 라는 의문을 품고 있었습니다. 이에 대한 답은!! 비용함수(손실함수)를 최소화 하도록 만드는 것이였는데요. 말로만 들어서는 이해가 잘 안가실 수 있지..