#noindex x,,1,,과 x,,2,,: 입력 신호 w,,1,,과 w,,2,,: 가중치(=[[가중값,weight]]) y: 출력 신호 θ: 임계값 입력이 뉴런에 보내질 땐 각각 고유한 가중치가 곱해진다. (w,,1,,x,,1,,, w,,2,,x,,2,,) 뉴런에서 보내온 신호의 총합이 정해진 한계(임계값)을 넘어설 때만 1을 출력함. $y=\begin{cases}0&(w_1x_1+w_2x_2\le \theta)\\1&(w_1x_1+w_2x_2>\theta)\end{cases}$ θ를 -b로 치환 b: 편향(bias) $y=\begin{cases}0&(b+w_1x_1+w_2x_2\le 0)\\1&(b+w_1x_1+w_2x_2>0)\end{cases}$ = Python Impl = {{{ def AND(x1, x2): w1, w2, theta = .5, .5, .7 # 가능한 값은 수없이 많음 tmp = x1*w1 + x2*w2 if tmp <= theta: return 0 elif tmp > theta: return 1 print(AND(0,0),AND(1,0),AND(0,1),AND(1,1)) # 0 0 0 1 출력됨 def NAND(x1, x2): w1, w2, theta = -0.5, -0.5, -0.7 if x1*w1 + x2*w2 <= theta: return 0 else: return 1 print(NAND(0,0),NAND(0,1),NAND(1,0),NAND(1,1)) # 1 1 1 0 출력됨 def OR(x1, x2): w1, w2, theta = 0.5, 0.5, 0.1 # 책에 연습해보라고 나와 있어서 내가 고안 if x1*w1 + x2*w2 <= theta: return 0 else: return 1 print(OR(0,0),OR(0,1),OR(1,0),OR(1,1)) # 0 1 1 1 출력됨 # XOR은 단층 퍼셉트론으로는 구현 불가, 다층 퍼셉트론(multi-layer perceptron)을 만들어야 함, 다음과 같이. def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) return y print(XOR(0,0),XOR(0,1),XOR(1,0),XOR(1,1)) # 0 1 1 0 출력됨 }}} = mklink = 단층퍼셉트론 single-layer_perceptron (SLP) https://everything2.com/title/Single-Layer+Perceptron 입력층input_layer과 출력층output_layer으로 구성 그 외의 layer는 없는? chk [[다층퍼셉트론,multi-layer_perceptron,MLP]] 다층퍼셉트론 multi-layer_perceptron (MLP) input layer와 output layer 사이의 모든 layers는 hidden layer? chk hidden layer는 한 개 이상? chk 출력층에서 입력층 방향으로 역방향 학습이 일어나는 것이 [[역전파,backpropagation]]? https://everything2.com/title/Multi-Layer+Perceptron multi-layered perceptron model [[WpKo:다층_퍼셉트론]] [[WpEn:Multilayer_perceptron]] threshold_function [[활성화함수,activation_function]] 퍼셉트론의 출력 값을 결정하는 비선형함수? //wpen [[이진분류기,binary_classifier]]([[이진분류,binary_classification]]기) 의 [[지도학습,supervised_learning]] 알고리듬. //wpko feedforward_network feedforward_neural_network XOR_problem 해결법이 다층퍼셉트론? - Yes. 단층 퍼셉트론으로는 XOR 연산이 불가능하지만, 다층 퍼셉트론으로는 가능. = 역사 = Frank Rosenblatt가 1957년 고안 책: Perceptrons (1969) ... [[WpEn:Perceptrons_(book)]] = Excerpts = == from 마스터 알고리즘 == 퍼셉트론에서 가중치([[가중값,weight]])의 양수값은 흥분성 연결,,excitatory connection,,을 나타내고 가중치의 음수값은 억제성 연결,,inhibitory connection,,을 나타낸다. 퍼셉트론은 입력들의 가중치 합([[가중합,weighted_sum]])을 넘으면 1을 출력하고 넘지 않으면 0을 출력한다. ([[boolean-valued_function]]) 우리는 가중치와 한계값을 조절함으로써 퍼셉트론이 수행하는 기능을 바꿀 수 있다. ...... 신경세포 몸체는 가중치가 적용된 입력들을 모두 더하고 축색돌기는 더한 입력에 대해 [[계단함수,step_function]]를 적용한다. ..... (단점) 퍼셉트론은 [[선형경계,linear_boundary]]([[경계,boundary]])만 학습할 수 있기 때문에 배타적 논리합(XOR)은 배울 수 없다. = tmp = 퍼셉트론: 인공지능의 시작 https://horizon.kias.re.kr/17443/ (시리즈 #1) { 인지(perception)의 기본요소, hence the name. [[활성화함수,activation_function]] 설명: 두 입력 신호 $(x_1,x_2)$ 가 있을 때 $y=f(w_1 x_1 + w_2 x_2 - b)$ 가중치를 적용하고 더한([[가중값,weight]] 적용) $w_1 x_1 + w_2 x_2$ 가 어떤 [[역치,threshold]] $b$ 보다 크면: 활성화된 출력 $y=1$ 을 넘겨주고, 그렇지 않으면: 비활성화된 출력 $y=0$ 을 넘겨줌. 이를 결정하는 함수 $f(s)$ 를 [[활성화함수,activation_function]]라 부름. 가장 유명한 활성화함수는 $f(s)=\frac{1}{1+\exp(-s)}$ 즉 [[시그모이드함수,sigmoid_function]]. 매개변수를 최적화하는 작업이 [[학습,learning]]. xor 문제. [[직선,line]] $w_1x_1+w_2x_2-b=0$ 을 생각하면, '''퍼셉트론'''은 이 직선을 [[경계,boundary]]로 공간?세상? 을 나누는... 즉 2D 공간을 나누는 1D 직선으로 해석 가능. 입력이 2차원 이상인 n차원 [[초공간,hyperspace]]에서 '''퍼셉트론'''은 (n-1)차원 [[초평면,hyperplane]]에 해당. (geometric_interpretation) xor문제는 숨은층hidden_layer으로 해결 가능. 보편적 어림정리 Universal Approximation Theorem : 충분히 많은 뉴런들로 구성된 숨은층을 가진 [[신경망,neural_network]]은 임의의 입력 x와 출력 y사이의 함수관계 y=f(x)를 표현할 수 있다 : 임의의 입력 x와 출력 y 사이의 관계를 표현할 수 있는 신경망이 반드시 존재함을 보장. George Cybenko가 증명. (1989) ''//여기선 [[근사,approximation]]를 어림으로 번역'' 이 정리는 신경망이 존재함을 보장하지만 구체적인 숨은 뉴런의 수와 매개변수 등을 알려주지는 않음. ''//이건 보니 최적의 매개변수를 즉 매개변수의 최적값을 찾는 [[최적화,optimization]] 문제'' 다차원 입출력 사이의 관계를 다루는 문제는 간단하지 않음 - [[오차역전파,error_backpropagation]] { 오차역전파 알고리즘 1986년 Nature. 데이비드 러멜하트David Rumelhart, 제프리 힌튼Geoffrey Hinton, 로날드 윌리엄스Ronald Willams } 알고리즘으로 해결. 오차(loss)([[손실함수,loss_function]]?)를 정의하고 [[기울기하강,gradient_descent]]법으로 매개변수를 계산/갱신. [[연쇄법칙,chain_rule]] 등장. 활성화함수 sigmoid의 한계 - 대안은 ReLU. [[확률적기울기하강,stochastic_gradient_descent]](SGD). 다음시간엔 [[생성모형,generative_model]]. } ---- tmp bmks ko https://wikidocs.net/24958 ---- Ref: Deep Learning from Scratch LinkThese: [[인공신경망,artificial_neural_network,ANN]] 퍼셉트론은 ANN의 구성요소/구성단위. [[뉴런,neuron]] [[노드,node]] [[계층,layer]] "(퍼셉트론은) 가장 간단한 형태의 피드포워드(Feedforward) 네트워크, 선형분류기로도 볼 수 있다" // [[선형분류기,linear_classifier]] ([[feedforward_network]]? [[feedforward_neural_network]]?) [[adaline]]과 자주 비교됨. http://www.aistudy.com/neural/adaline.htm Twins: http://www.aistudy.com/neural/perceptron.htm http://www.aistudy.com/neural/multilayer_perceptron.htm [[WpKo:퍼셉트론]] [[WpEn:Perceptron]] https://everything2.com/title/perceptron tmp twins: [[HashKr:퍼셉트론]] https://developers.google.com/machine-learning/glossary?hl=ko#perceptron https://freshrimpsushi.github.io/posts/definition-of-perceptron/ Up: [[인공지능,artificial_intelligence]]