직접구현

    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..