Perceptron Algorithm - Perceptron Trick에 대해 이미 배웠으므로 퍼셉트론 알고리즘을 구현할 준비가 다 되었다. - 임의의 경계선을 그었을때 점 4개는 good, 점 2개는 come closer의 상황에 놓이게 된다. - 우측에 놓인 mis-point에 맞춰 경계선을 수정하였다. - 이번엔 좌측만이 mis-point로 남게 된다. - 마찬가지로 좌측에 놓인 mis-point에 맞춰 perceptron-trick에 의거, 경계선을 수정해주면 - 모든 점들이 correct한 상태로 놓이게 된다. - 이 알고리즘의 pseudo code를 작성해보자면, - 가장먼저 랜덤한 weights를 가진 경계선으로 시작한다. (Wx + b) - 그다음 잘못 분류된 점들에 대해 좌표값을 얻어두고..
Perceptrons Trick - 근데 사실상 이런 퍼셉트론을 우리가 직접 구현해내기는 어렵다. - 따라서 고안된 아이디어가 바로 우리는 result에 대한 값을 제공해주고, 그들 스스로가 구현해 내는것이다. - 자 다시 전의 예제로 돌아가보면, 그럼 컴퓨터 스스로가 그 기준을 잡는다고 한다면, - 어떻게 그 기준선(Positive 와 Negative area를 나누는 경계)을 설정할지??? - 먼저 이와같이 임의의 경계선을 설정해보고, 이 경계가 어느정도 일치된 값을 도출해내는지를 판단한다. - 일치하는 값이 아닌 일치하지 않는 두 값을 기준으로 기준선에게 - 해당 일치하지 않는 점 방향으로 더 가까이 오라고 알려준다. - 더 가까이 오라고 기준선(경계선)에게 말을하여 범위를 점차 좁혀간다. - Pe..
Perceptrons as Logical Operators - 논리연산자로서의 퍼셉트론에 대해 알아본다. - AND, OR, NOT, XOR Perceptron을 구현해보자. · AND Perceptron - 기본적인 AND연산을 Perceptron으로 구현하려면? - INPUT에 대한 TRUE 또는 FALSE 값을 1과 0으로 표현하고, 이전과 동일하게 - 기준선을 정의한다(weights와 bias를 반영하여). - 그 이후 positive area와 negative area로 구분지어 퍼셉트론이 해당 input들을 그리게하고 - Positive area의 경우 1을, Negative area의 경우 0을 리턴하게 한다. · OR Perceptron - OR 연산 또한 마찬가지다. 위와 동일한 알고리즘..
Perceptron - Neural network의 블록을 구성하는 개념 - 데이터(예시에서는 파란, 빨간 점) 값과 경계선의 개념을 노드 안에 넣는다. - 하나의 노드안에 파란점, 빨간점으로 표시되었던 데이터들과 그 기준선에 대한 정보가 들어있고, - Input 데이터로 시험성적(test)과 학점(grades)을 넣어준다. 이 예시의 경우에는 시험성적 : 7, 학점 : 6 을 대입. - 그렇게되면 Perceptron이 하는 역할은 해당 데이터를 노드에 대입해 - 이것이 Positive area에 위치하면 yes를 , Negative area에 위치하면 no를 리턴한다. - 이전 예시를 다시 들어보면, Score를 결정하는 방정식은 2*Test + 1*Grades - 18 이고, - 여기서의 weight..
Higher Dimensions - 앞서 봤던 예제에 추가로, 만약 우리가 고려해야할 변수가 더 늘어난다면? - 예를들어 석차(class rank)라는 변수가 추가된다면 어떻게 우리는 3개의 데이터 열(column)을 어떻게 맞춰야할까? - 이렇게되면 우리는 x1(시험성적, test), x2(학점, grades), x3(석차, class rank)라는 3가지 축으로 3차원을 맞이한다. - 그럼 우리가 앞서 찍은 파랑, 빨강 점들은 공중에 떠있는 형태가 되고 - 기준선은 3차원 상의 면 즉, 기준 면(plane)이 되어 동일하게 방정식을 갖는다. - 평면의 방정식 w1x1 + w2x2 + w3x3 + b = 0 을 갖게되고, 이 면을 기준으로 두 영역(reigions)으로 나뉜다. - 이 방정식 역시 Wx..
Introduction - 스팸메일 분류, 주가 예측, 이미지나 사진인식, 질병 진단, 자율주행 등 딥러닝의 사용처는 무한함 - 딥러닝의 심장은 Neural Networks 이다. - Neural Network는 뇌의 작용원리를 흉내내는 프로세스이고 이를 알고리즘으로 구현해내야한다. Classification Problems - 대학교의 입학처 직원이라 가정하고, 대학에 지원한 학생의 입학을 허가할 것인지, 불허할것인지를 판단할 경우를 가정하자. - 학생들을 평가하기위한 지표로 시험성적과, 학점이 있다. - 시험성적 : 9/10, 학점 8/10인 학생은 우수하니 통과 - 시험성적 : 3/10, 학점 4/10인 학생은 탈락 - 그렇다면 시험성적 : 7/10, 학점 6/10인 학생은? - 이런것을 판단하기위..
Matrix Transposes - 대각원소를 기준으로 뒤집는것. - 그런데 이 transpose에서 중요하게 짚고 넘어가야할 부분이 있다. - transpose를 하려는 행렬 A가 정방행렬이 아닐 경우, transpose 이후 기존의 차원이 뒤집힌 채 shape이 바뀐다. - 또한 열은 행으로 행은 열로 데이터들이 바뀜 - transpose는 shape이 다른 두 행렬간의 연산을 필요로 할 때 유용하게 쓰일 수 있다. - 하지만 그 연산 결과가 내가 원하는(의도한)결과인지 고민하여 처리하여야 한다. - 행렬의 shape의 크기가 다른 두 행렬에 대해 product를 진행하려면 - transpose를 하거나, 행렬의 순서를 바꿔 계산하는 방법이 있다. - 그 각각의 연산 결과는 transpose 관계에 ..
Matrix Multiplication : Part 1 - Element-wise Operation에 관해서 앞서 다뤘었다. - 이번엔 Matrix Multiplication에 대해 알아볼거고 더 복잡한 편이다. - 대부분의 행렬 곱셈은 Matrix Multiplication을 의미하는것이 아니라 Matrix Product를 의미한다. - 일반적인 행렬식의 곱셈을 짚고 넘어가보자. - 행렬 A의 첫번째 행벡터와 행렬 B의 첫번쨰 열벡터간의 각 인덱스가 일치하는 원소끼리의 곱을 모두 합한것이 - Matrix Product의 결과가 된다. - 두가지 동일한 길이의 벡터가 있을때 같은 인덱스에 위치한 원소끼리의 곱을 합한 결과를 dot products 라 부른다. Matrix Multiplication : P..
Scalar Math - 2 + 3 = 5 또는 2 * 3 = 6과 같이 대부분의 스칼라값 계산은 덧셈과 곱셈이다. - 신경망 네트워크에선 이러한 스칼라값의 계산도 수천 수백개씩 해야할 경우가 다수이다. - 또 [2^2 4^2 6^2 ...] 와 같은 행렬에서도 여기에 다시 제곱을 해야 할 수도 아니면 - 동일한 값으로 모두 나눠야 하는 경우도 있다. - 또한 프로그램을 설계함에 있어 모든 값에 대해 어느 시점에서 반복문을 돌려야 할 지도 고려해야한다. - 그런데 이러한 연산에 대한 복잡도를 고려할 때 행렬이 한가지 대안이 될 수 있다. Element-wise Operation - 이러한 수많은 스칼라 값들이 행렬에 저장되어 있으면 Element-wise Operation이 가능한데, - 행렬의 개별 원..
Introducing NumPy - 파이썬은 편리하지만 느리다는 단점이 있다. - 그러나, 파이썬은 C로 쓰인 코드보다 빠르게 실행될 수 있는 라이브러리를 사용할 수 있다. - NumPy가 그런 라이브러리 중 하나이다 - NumPy는 파이썬에서 매우 빠르게 수학적 연산이 가능하게 하고, 행렬과 같은 집합적 연산에 효율적이다. - 여기서 언급할 부분들은 극히 일부에 불과하므로, - 파이썬 NumPy라이브러리를 통한 수학적 연산에 대해 더 알아보려면 여기를 참고하도록. Importing NumPy - NumPy 라이브러리를 import할 땐, 일종의 규칙으로 np로 지정하여 임포트 한다.#> import numpy as np 와 같이 np로 임포트 할 것을 규칙으로 한다. - 이제 np를 이용하여 np. 과..