Python/인공지능
Minist 데이터 활용 0,1,2 구분 인공지능 직접구현
이번에는 Mnist 데이터들을 활용해서 직접 0,1,2를 구분하는 인공지능을 만들어보았다. 이를 확장해서 구현한다면 0~9까지 구분하는 인공지능을 라이브러리 없이 직접 만들어보는 것이 가능할 것이다. 이전 신경망까지 잘 따라왔다면 오히려 쉽다! 입력 후보군 5개와 0,1,2로 된 출력 후보군 3개를 넣어주기만 하면 된다. 먼저 흐름도를 통해 전체적인 흐름을 파악해보자. 우선 일반적인 Minist 를 받아오는것이 아닌 기존에 했던것처럼 엑셀형식으로 가공된 파일이 있다. 이들을 활용해서 구현할 것이다. 출력은 0,1,2로 나오기 때문에 ONE-HOT-ENCODIG을 거친다면 100, 010, 001 3가지의 출력 후보군이 나올것이다. 그렇다면 입력 후보군들은 어떻게 선택해야 할까? (1) 가로축 Projec..
클러스터링 K-Means 직접구현
이번에는 K-Means를 직접 구현 해볼것이다. 우선 클러스터링에 대해서 간략하게 설명부터 해보자! 만약 위처럼 사과,배,바나나를 분류하는 문제를 구현해본다고 생각해보자. 이전에 배웠던 인공신경망을 활용할 수도 있겠지만 이번에는 클러스터링을 이용하여 군집을 나누어 볼 것이다. 어떠한 특성을 잘 집어낸다면 결국 사과,배,바나나들은 군집처럼 분류될 것이다. 이들의 군집의 중심점을 찾은 후, 근처에 있는것들을 한 군집을 분다면 우리는 분류를 할 수 있다. 클러스터링의 기본적인 프로세스는 아래와 같다. 즉 랜덤의 중심점을 설정한 후에, 가까운곳들을 해당 군집으로 묶어준다. 그이후 같은 군집내의 중심을 다시 중심점으로 잡은 후에 군집의 분류를 시켜준다. 이를 계속 반복하여 군집이 더이상 변하지 않을떄까지 한다면,..
인공신경망 직접구현
이번에는 인공신경망을 low레벨에서 직접구현 해보았다. 만약에 AND게이트를 구현한다고 생각해보자. 우리는 퍼셉트론이라는 개념을 알아야 한다. class perceptron_for_GATE: #GATE만들기위한 퍼셉트론 def __init__(self,w): self.w = w def output(self,x): tmp = np.dot(self.w,np.append(1,x)) result = 1.0*(tmp>0) return result 퍼셉트론은 위와같은 구조로 만들 수 있다. w_and = np.array([-1.2,1,1]) #AND GATE and_gate = perceptron_for_GATE(w_and) w_or = np.array([-0.8,1,1]) # OR GATE or_gate = pe..
Training , Test 선택 가우시안 모델 구현하기
이번엔 Training, Test 케이스를 나누어서 가우시안 회귀를 적용해 보자. 예를들어 25개의 데이터가 있다고 생각해보자. 만약 이 25개의 데이터를 이용해 저번 글에서 사용한 가우시안 함수를 이용한 모델을 만들면 어떻게 될까? K의 값이 높아질수록 이 25개의 데이터에 알맞아지는 함수가 나올 것이다. 그렇다면 이 함수가 정말 뛰어난 인공지능이라고 말할 수 있을까? 정답은 그렇지 않다. 이를 생각하기위해 25개의 데이터를 20개의 데이터와 5개의 데이터를 가지고 봐보자. 학습을 20개의 데이터만 가지고 학습을 시키고 5개의 데이터를 실전 데이터라고 생각해보자. MSE는 손실율 즉, 높을수록 정확도가 떨어진다고 생각하면 될 것 같다. K의 값이 일정 수순을 넘어가면 실전 데이터에선 오히려 오차가 증가..
파이참에서 GPU사용!
인공지능을 공부할때는 보통 코랩을 통해서 GPU를 사용한다! 하지만 집의 컴퓨터에 GPU가 장착되어 있다면 이를 활용해서 코드를 돌려볼 수도있다. 파이참에서 GPU를 사용하는 방법에 대해 다뤄보겠다 우선 아나콘다를 설치해야 한다. https://www.anaconda.com/products/distribution Anaconda | Anaconda Distribution Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine. www.anaconda.com 그리고 파이썬과 파이참은 설치되어 있다고 가정해보겠다. 아나콘다는 가장 최신..
가우스 함수를 이용한 선형회귀 모델 직접구현
가우스 함수를 이용한 선형회귀 모델 직접구현을 해보자. 전글,전전글에서 소개했던 방법외에 가우스 함수를 사용해서도 모델을 구현할 수 있는데, 이는 직선이 아닌 곡선을 구현하는 경우에 사용된다. 즉, 위와같은 가우스 함수의 합으로 예측 모델을 구할 수 있는 것이다. 즉 위와같은 꼬불꼬불한 예측 모델을 만들 수 있게 된다. 몇개의 가우스 함수를 더해서 모델을 만들건지를 K라고 생각하고 이는 우리가 정한다고 생각해보자. 수식적으로 보면 K개의 가우스 함수는 위처럼 식을 세울 수 있다. 이때 Uk와 시그마값은 위와 같이 설정해 둘 수 있다. 결국 말은 어렵지만 전글,전전글에서 했던것과 똑같이 예측모델을 만드는데 이를 가우스함수로 만들 뿐이다. 그리고 우리는 가우스 함수를 어떻게 만들어야 할지도 알고있다. 또한 ..