목록공부 (59)
Broccoli's House
3주차 - (2) 아두이노 →랩뷰 AD/DA 변환 하드웨어 세팅 : NI-6008, 아두이노 DUE, 전선 - NI-6008과 아두이노를 컴퓨터에 연결한다. - NI-6008의 AI3(-)와 아두이노의 디지털 입력 포트(44)를 전선으로 연결한다. 소프트웨어 세팅 - 아두이노는 사인 함수를 지원하지 않기 때문에 따로 싸인 함수 값을 가지고 있는 배열을 선언해준다. - 아두이노 DUE의 DAC1을 출력으로 둔다. 아두이노 DUE의 DAC는 12비트의 분해능을 가진다. - 12비트의 분해능으로 아날로그 값을 출력하는 코드를 작성한다. 아두이노 DUE의 경우, 정격 전압은 3.3V이지만 출력되는 전압에는 보드 자체에서 1/6의 오프셋이 있어 1/6~5/6의 값만을 출력한다. - 랩뷰에서, DAQ 어시스턴트로 ..
3주차 - (1) 랩뷰 → 아두이노 AD/DA 변환 하드웨어 세팅 : NI-6008, 아두이노 DUE, 전선 - NI-6008과 아두이노를 컴퓨터에 연결한다. - NI-6008의 AO0를 아두이노의 아날로그 입력 포트 A0와 연결하고, GND 포트에 각각 전선을 연결한다. 소프트웨어 세팅 - 랩뷰에서 아날로그 블록을 가져다 놓는다. - 블록으로 웨이브폼을 디지털로 변환한다. 출력되는 디지털 웨이브폼은 불리언 형태이기 때문에, 블록을 통해 2진수로 변경해준다. - 출력된 12비트의 2진수(0~4095)를 아두이노 DUE의 정격전압 3.3V로 스케일링 해준다. - 스케일링된 출력은 배열의 형태이기 때문에, 신호를 출력하여 아두이노에서 읽기 어렵다. 따라서 배열에서 각각의 원소를 차례대로 불러내어 DAQ 어시..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 출력층 설계 항등 함수 - 신경망은 회귀와 분류 모두에 이용될 수 있으나, 다만 문제의 유형에 따라 출력층에 사용되는 활성화 함수에서 차이를 보인다. 일반적으로 회귀에는 항등 함수, 분류에는 소프트맥스(Softmax) 함수를 사용한다. 특히나 다중 분류에서 소프트맥스 함수를 사용한다. - 항등 함수(Identity Function) : 항등 함수는 입력을 그대로 출력하는 함수이다. 입력과 출력이 항상 같기 때문에, 출력층에 항등 함수를 사용하면 입력 신호가 그대로 출력 신호가 된다. 회귀 문제의 특성상 데이터 간의 연속적인 관계가 있어야하기 때문에, 값을 0과 1에 가깝게 분류하는 시그모이드, 계단 함수 등의 활성화 함수가 필요가 없는 것이다. ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 3층 신경망 구현 신호 전달 구현 - 입력층(Input Layer, 0층)은 2개, 첫 번째 은닉층(First Hidden Layer, 1층)은 3개, 두 번째 은닉층(Second Hidden Layer, 2층)은 2개, 출력층(Output Layer, 3층)은 2개의 노드로 구성된 3층 신경망이다. (1) 입력층에서 1층으로의 신호 전달 - 가중치 계산X = np.array([1.0, 0.5]) # 입력값 W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) # 가중치(weight) B1 = np.array([0.1, 0.2, 0.3]) # 편향(bias) A1 = np.dot(X, W1) + B1 # X와 ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 활성화 함수 활성화 함수 - 활성화 함수(Activation Function) : 퍼셉트론 알고리즘에서, 입력 신호에 가중치를 곱한 값을 임계치와 비교하여 그보다 크면 1을, 작으면 0을 반환한다. 이 때 임계치와 비교하여 0또는 1을 출력하는 함수를 활성화 함수라한다. 즉, 활성화 함수란 입력 신호의 총합을 출력 신호로 변환하는 함수이다. 입력 신호의 총합이 활성화를 일으키는지 정하는 역할을 한다. 다음은 입력 신호의 총합 a를 출력 신호 y로 변환하는 활성화 함수 h이다. 계단 함수 - 계단 함수(Step Function) : 임계치를 경계로 출력이 바뀌는 함수이다. 즉, 0을 경계로 출력이 0에서 1, 또는 1에서 0으로 바뀌는 함수이다. ..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 신경망(Neural Network) 신경망 - 인공 신경망(Artificial Neural Network) : 머신러닝에서 생물의 중추 신경계, 그 중에서도 뇌에서 영감을 얻은 통계학적 학습 알고리즘이다. 인공 뉴런(노드)이 서로 연결되어 네트워크를 형성하고, 각각의 뉴런이 학습을 통해 가중치를 변화시켜 문제 해결 능력을 가지는 모델 전반을 가리킨다. - 퍼셉트론 알고리즘의 경우, 복잡한 함수를 표현할 수는 있지만 가중치를 설정하는 작업은 사람이 수동으로 해야한다. 그러나 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력을 가지고 있다. - 신경망은 입력 신호가 들어가는 입력 노드가 층을 이루고 있는 입력층(Input L..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 퍼셉트론 : XOR 게이트 XOR 게이트 - XOR 게이트(Exclusive-OR) : 배타적 논리합. 입력이 같을 때는 0을, 입력이 다르면 1을 출력한다. x1x2y 000 101 011 110 - 퍼셉트론은 직선으로 나뉘는 두 영역을 만든다. 직선으로 나뉜 한쪽 영역은 1을 출력하고, 다른 한쪽은 0을 출력한다. 그러나 XOR 게이트의 경우 직선 하나로 영역을 나누는 것은 불가능하다. 따라서 선형 영역으로는 불가능하고, 곡선으로 나누는 비선형 영역에서는 가능하다. 즉, 단층 퍼셉트론으로는 비선형 영역을 분리할 수 없는 것이다. 다층 퍼셉트론 - 다층 퍼셉트론(Multi-Layer Perceptron) : 여러 개의 퍼셉트론을 층으로 쌓아 만..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 퍼셉트론 : 단순 논리 회로 AND 게이트 - AND 게이트는 두 입력이 모두 1일 때만 1을 출력하고, 그 외에는 0을 출력한다. x1x2y 000 100 010 111 def AND(x1, x2) : x = np.array([x1, x2]) w = np.array([0.5, 0.5]) b = -0.7 tmp = np.sum(w*x)+b # 퍼셉트론의 연산값을 저장 if tmp
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 퍼셉트론 알고리즘 퍼셉트론 - 퍼셉트론(Perceptron) : 신경망(딥러닝)의 기원이 되는 알고리즘이다. 다수의 신호를 입력으로 받아 각 노드의 가중치(w)와 입력 값을 곱한 것을 모두 더한 값이 활성 함수에 의해 판단된다. 그 값이 임계치보다 크면 1이 출력되고 작으면 0이 출력된다. - 퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여한다. 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용한다. 그러므로, 가중치가 크다면 해당 신호가 그만큼 더 중요하다는 것을 뜻한다. 가중치와 편향 도입 - 임계치(θ)를 0으로 두기 위하여 편향(bias, b)을 도입한다. 즉, 퍼셉트론은 입력 신호에 가중치를 곱한 값과 편향을 합하여..
※ 이 글의 내용은 O'REILLY의 책을 기반으로 한다. 지도 학습 알고리즘 : 나이브 베이즈 나이브 베이즈 분류기 - 나이브 베이즈(Naive Bayes) 분류기 : 데이터의 각 특성을 개별로 취급하여 매개변수를 학습하고, 각 특성에서 클래스 별로 통계를 단순하게 취합한다. 선형 모델과 매우 유사하나 로지스틱 회귀(Logistic Regression)나 선형 SVC보다 훈련 속도가 빠르고, 일반화 성능은 조금 뒤쳐진다. 데이터의 특성들이 각각 독립적이고 동등하게 중요하다는 'Naive(순진한)' 가정이 들어간다. 그러나 실제 문제에서 모든 특성이 동등하게 중요하지 않는 경우가 많다. - Ex) 어떠한 병에 걸릴 확률이 1%, 걸리지 않을 확률이 99%, 그 병에 대한 검사를 할 확률이 20%, 검사하..