퍼셉트론 가중치 계산 | Ch07_05.신경망(퍼셉트론 계산 예제)05 빠른 답변

당신은 주제를 찾고 있습니까 “퍼셉트론 가중치 계산 – Ch07_05.신경망(퍼셉트론 계산 예제)05“? 다음 카테고리의 웹사이트 https://you.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://you.charoenmotorcycles.com/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 강서대학교 빅데이터경영학과 이상철 교수 이(가) 작성한 기사에는 조회수 3,498회 및 좋아요 39개 개의 좋아요가 있습니다.

Table of Contents

퍼셉트론 가중치 계산 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 Ch07_05.신경망(퍼셉트론 계산 예제)05 – 퍼셉트론 가중치 계산 주제에 대한 세부정보를 참조하세요

퍼셉트론 가중치 계산 주제에 대한 자세한 내용은 여기를 참조하세요.

[머신러닝] – 단층 퍼셉트론(Single-layer Perceptron)

net값: 입력값과 가중치의 곱을 모두 합한 값으로써, 기하학적으로 해석하면 선형 경계의 방정식과 같다. 활성홤수(activation function): 뉴런에서 계산 …

+ 여기에 보기

Source: untitledtblog.tistory.com

Date Published: 4/30/2021

View: 2614

[인공 신경망] 2. 퍼셉트론 – 네이버 블로그

위와 같이 입력의 각 신호가 1, 2, 5 이며 가중치가 각 0.35, 0.25, 0.08이며 활성함수가 계단함수일 때 신호 출력을 계산해 보자. ​. 신호의 합 계산.

+ 자세한 내용은 여기를 클릭하십시오

Source: m.blog.naver.com

Date Published: 8/5/2021

View: 2597

문과생도 이해하는 딥러닝 (1) – 퍼셉트론 Perceptron

가중치라고 부르는 이 weight는 각각의 입력신호에 부여되어 입력신호와의 계산을 하고 신호의 총합이 정해진 임계값(θ; theta,세타)을 넘었을 때 1을 …

+ 자세한 내용은 여기를 클릭하십시오

Source: sacko.tistory.com

Date Published: 3/26/2021

View: 3527

퍼셉트론 (Perceptron) 구조와 학습, 퍼셉트론 python 코드

입력 노드와 출력 노드는 에지로 연결되어 있고 이 에지를 가중치라고 합니다. 출력층에서는 활성 함수가 같이 있어서 합 계산과 활성 함수 계산을 순차적 …

+ 자세한 내용은 여기를 클릭하십시오

Source: ysbsb.github.io

Date Published: 10/14/2022

View: 8519

[ML] 퍼셉트론(Perceptron)의 개념과 구조, 동작, 학습 – velog

식 3.8을 가중치 갱신 규칙(θ = θ – pg)에 대입하면 식 3.9가 나온다. 목적함수가 커지는 방향이므로 -를 붙여 계산하고 p는 학습률이다. 행렬 표기. 행렬 …

+ 여기에 보기

Source: velog.io

Date Published: 12/16/2021

View: 1130

4-1. 퍼셉트론 – 클릭클릭! 엑셀로 이해하는 인공지능

딥러닝의 가장 기초적인 형태인 퍼셉트론 알고리즘의 계산 방식을 실습합니다. (1)퍼셉트론은 각 변수에 가중치를 두어 곱한 다음 이 값을 전부 합 …

+ 더 읽기

Source: wikidocs.net

Date Published: 11/9/2022

View: 5213

가중치 구하기 – 언제나 휴일

다루는 내용 == 단층 퍼셉트론(Single Layer Perceptron) 가중치, … 데이터와 가중치, 임계치를 전달받아 얼마나 예측이 맞는지 계산하는 함수를 정의합시다.

+ 여기에 표시

Source: ehpub.co.kr

Date Published: 5/25/2021

View: 3687

[Machine Learning] 퍼셉트론 (Perceptron) – 개봄 블로그

* 원하는 결과가 나오도록 “가중치”를 결정하는 방법을 만들어 내는데, 이 가중치를 결정하는 것을 “학습”이라고 부른다. 퍼셉트론 계산 식. 위 식으로 …

+ 여기에 표시

Source: gaebom.tistory.com

Date Published: 5/11/2021

View: 7082

기계학습] 02.인공뉴런과 퍼셉트론의 원리 두번째

… 에는 지난 포스트에 이어 이번 포스트는 퍼셉트론의 최적 가중치 계산법, … 예측을 위한 최적 파라미터를 학습 알고리즘을 통해 계산하게 된다.

+ 더 읽기

Source: yamerong.tistory.com

Date Published: 10/16/2022

View: 8821

주제와 관련된 이미지 퍼셉트론 가중치 계산

주제와 관련된 더 많은 사진을 참조하십시오 Ch07_05.신경망(퍼셉트론 계산 예제)05. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

Ch07_05.신경망(퍼셉트론 계산 예제)05
Ch07_05.신경망(퍼셉트론 계산 예제)05

주제에 대한 기사 평가 퍼셉트론 가중치 계산

  • Author: 강서대학교 빅데이터경영학과 이상철 교수
  • Views: 조회수 3,498회
  • Likes: 좋아요 39개
  • Date Published: 2019. 11. 10.
  • Video Url link: https://www.youtube.com/watch?v=JJXnUDZKP84

단층 퍼셉트론(Single-layer Perceptron)

1. 개요

퍼셉트론은 1957년 코넬 항공 연구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트(Frank Rosenblatt)에 의해 고안된 인공신경망이다. 로젠블라트에 의해 제안된 것은 가장 간단한 형태의 단층 퍼셉트론(single-layer perceptron)으로 입력 벡터를 두 부류로 구분하는 선형분류기이다.

2. 용어 정의

임계치(threshold): 어떠한 값이 활성화되기 위한 최소값을 임계치라고 한다.

가중치(weight): 퍼셉트론의 학습 목표는 학습 벡터를 두 부류로 선형 분류하기 위한 선형 경계를 찾는 것이다. 가중치는 이러한 선형 경계의 방향성 또는 형태를 나타내는 값이다.

바이어스(bias): 선형 경계의 절편을 나타내는 값으로써, 직선의 경우는 $y$절편을 나타낸다.

net값: 입력값과 가중치의 곱을 모두 합한 값으로써, 기하학적으로 해석하면 선형 경계의 방정식과 같다.

활성홤수(activation function): 뉴런에서 계산된 net값이 임계치보다 크면 1을 출력하고, 임계치보다 작은 경우에는 0을 출력하는 함수이다. 이 정의는 단층 퍼셉트론에서만 유효하며, 다층 퍼셉트론에서는 다른 형태의 활성함수를 이용한다.

뉴런(neuron): 인공신경망을 구성하는 가장 작은 요소로써, net값이 임계치보다 크면 활성화되면서 1을 출력하고, 반대의 경우에는 비활성화되면서 0을 출력한다.

[그림 1] 뉴런의 구조

위의 [그림 1]은 뉴런의 구조를 나타낸다. 뉴런에서 $x$는 입력 벡터의 값을 나타내고 $w$는 가중치를 나타낸다. 바이어스 입력값은 \({x}_{0}\), 바이어스 기울기는 \({w}_{0}\)로 표기했으며, $f$는 활성함수를 타나낸다.

3. 알고리즘 구조

단층 퍼셉트론은 입력층(input layer)과 출력층(output layer)으로 구성된다. 입력층은 학습 벡터 또는 입력 벡터가 입력되는 계층으로써, 입력된 데이터는 출력층 뉴런으로 전달되어 활성함수에 따라 값이 출력된다. 출력층은 퍼셉트론 설계 시 임의의 $n$개의 뉴런으로 구성할 수 있으며, 아래의 [그림 2]는 1개의 뉴런으로 구성된 출력층을 나타낸다.

[그림 2] 출력층의 크기가 1인 단층 퍼셉트론

단층 퍼셉트론의 학습 알고리즘은 아래와 같다.

1) 가중치와 바이어스 가중치를 -0.5와 0.5 사이의 임의의 값으로, 바이어스 입력값을 임의의 값으로 초기화

2) 하나의 학습 벡터에 대한 출력층 뉴런의 $net$값을 계산

3) 활성함수를 통해 계산된 $net$값으로부터 뉴런의 실제 출력값을 계산

4-1) 뉴런의 출력값과 목표값의 차이가 허용 오차보다 작으면 [5]로 이동

4-2) 뉴런의 출력값과 목표값의 차이가 허용 오차보다 크면 학습을 진행

5-1) 현재 학습 벡터가 마지막 학습 벡터가 아니면, 현재 학습 벡터를 다음 학습 벡터로 설정하고 [2]로 이동하여 반복

5-2-1) 현재 학습 벡터가 마지막 학습 벡터이고, 모든 학습 벡터에 대해 출력값과 목표값이 허용 오차보다 작으면 알고리즘을 종료

5-2-2) 현재 학습 벡터가 마지막 학습 벡터이지만 출력값과 목표값이 허용 오차보다 큰 학습 벡터가 존재하면, 현재 학습 벡터를 처음 학습 벡터로 설정하고 [2]로 이동하여 반복

4. 연산 정의

1) 뉴런의 net값 계산

뉴런의 $net$값은 아래와 같이 계산된다. 아래의 식에서 $N$은 입력 벡터의 크기를 나타낸다.

2) 활성함수 정의

활성함수는 $net$값이 임계치보다 크면 뉴런의 출력값을 활성화하고, 그렇지 않으면 뉴런의 출력값을 비활성화하는 함수이다. 퍼셉트론에서 사용하는 가장 기본적인 활성함수는 계단 함수(step function)를 이용한다. 퍼셉트론에서 이용하는 계단 함수의 정의는 아래의 [식 1]과 같다. 활성함수로 계단함수를 이용할 때는 뉴런의 출력값은 0과 1만을 갖기 때문에 목표값과 출력값의 차이라는 개념보다는 목표값과 출력값의 일치, 불일치라는 개념을 이용한다.

3) 학습 연산(Learning rule) 정의

출력층 뉴런의 출력값과 목표값의 차이가 허용오차보다 크면 출력층 뉴런의 가중치를 조정해야한다. 가중치를 조정하는 식은 아의 [식 2]와 같다.

5. 예제

이 예제는 단층 퍼셉트론을 이용하여 AND 연산을 학습시키는 예제이다. 이 예제에서 AND 연산을 학습하기 위한 퍼셉트론의 구조는 아래의 [그림 3]과 같다. 이 예제의 단층 퍼셉트론의 학습률은 0.05, 임계치는 0으로 설정하였다. 허용오차는 알고리즘을 시작하기 전에 0과 0.1 사이의 적당히 작은 값으로 설정한다. 그러나 계단 함수를 이용할 경우에는 출력값과 목표값이 ‘같다/다르다’로만 판별되기 때문에 허용오차를 계산하는 것이 무의미하여 허용오차에 대한 서술을 생략하였다.

[그림 3] AND 연산 학습을 위한 단층 퍼셉트론의 구조

1) 학습 데이터 제시

AND 연산에 대한 학습 데이터는 아래와 같다.

2) 가중치 및 바이어스 초기화

가중치와 바이어스 가중치를 -0.5와 0.5 사이의 임의의 값으로, 바이어스 입력값은 -1로 초기화한다.

3) 각 학습 벡터에 대한 출력값 계산 및 가중치 조정

3-1) t = 1

첫 번째 학습 벡터 (0, 0, 0)에 대한 출력값을 계산한다.

출력값이 목표값과 일치하므로 가중치를 수정하지 않고 두 번째 학습 벡터 (0, 1, 0)에 대한 출력값을 계산한다.

출력값이 목표값과 일치하므로 가중치를 수정하지 않고 세 번째 학습 벡터 (1, 0, 0)에 대한 출력값을 계산한다.

출력값이 목표값과 다르므로 가중치를 수정한다.

네 번째 학습 벡터 (1, 1, 1)에 대한 출력값을 계산한다.

학습 벡터1, 2, 4는 출력값과 목표값이 일치하지만, 출력값과 목표값이 다른 학습 벡터(세 번째 학습 벡터)가 존재하므로 현재 학습 벡터를 처음 학습 벡터로 설정하고 이 과정을 반복한다.

3-2) t = 2

첫 번째와 두 번째 학습 벡터의 출력값은 모두 목표값과 같으므로 가중치의 변화가 없다. 그러나 세 번째 학습 벡터의 출력값은 1로, 목표값인 0과 다르므로 가중치를 수정한다.

네 번째 학습 벡터에 대한 출력값은 1로, 목표값인 1과 같으므로 현재 가중치를 그대로 유지한다. 세 번째 학습 벡터의 출력값이 목표값과 다르므로, 학습 벡터를 처음 학습 벡터로 설정하고 이 과정을 반복한다.

3-3) t = 3

아래의 현재 가중치를 갖는 퍼셉트론에 첫 번째부터 네 번째까지 학습 벡터를 입력하면 모두 목표값과 같으므로, 알고리즘을 종료한다. 퍼셉트론 학습의 목표는 모든 학습 벡터를 올바르게 분류하는 가중치를 구하는 것이기 때문에 현재 가중치를 반드시 별도의 저장공간에 유지해야한다. 이 예제를 통해 AND 연산을 올바르게 학습하게된 퍼셉트론의 가중치는 아래와 같다.

[인공 신경망] 2. 퍼셉트론

이전 장에서 설명한 인공 뉴런은 하나의 입력에 대해 하나의 출력이 발생하였다. 퍼셉트론의 여러 입력을 받아 하나의 출력을 발생한다. 즉, 여러 개의 인공 뉴런이 입력을 받아 하나로 연결되어 하나의 출력을 발생하는 것이다. 위의 그림과 같이 여러 명의 친구들이 ‘A’라는 한 명의 친구에게 장난으로 건드리면, ‘A’ 혼자 짜증 나서 반응을 보이는 것과 같다.

문과생도 이해하는 딥러닝 (1) – 퍼셉트론 Perceptron

퍼셉트론 Perceptron

문과생도 이해하는 딥러닝 (1)

딥러닝이라는 말이 학계, 업계 어디든 할 것 없이 엄청난 화두이다. 그래도 아직까지는 기계학습이면 충분하지만 점점 더 인공지능과 관련된 신경망 기반의 딥러닝 알고리즘들에 대한 수요가 더욱 중요해질 것이다.(그것이 설령 필요하지 않더라도… 오버스펙…) 어쨌든 기계학습(machine learning) 알고리즘의 하나일 뿐인 딥러닝이 이제는 기계학습이라는 용어 자체를 대변하려는 기세를 보이고 있다. 기계학습에 대해 설명한 좋은 글들이 많이 있다. 간단하게 본다면 기계학습은 기계가 학습하는 것이다!(?) 컴퓨터는 인간에 비해서 복잡한 연산을 아주 빠르게 소화할 수 있는 기계일 뿐이었고 사람과 같이 무언가를 인식하는 것은 하지 못했다. 기계학습은 기계가 학습을 해서 인간처럼 사물도 인식하고 무언가를 분류해보고 묶어보고 하도록 하는 것이라고 보면 된다.

최근 기존 기계학습 방식으로는 처리가 어려운 문제를 딥러닝으로 해결해보려는 시도가 많아지고 있는 만큼 아직 기계학습(머신러닝)을 살펴보는 중이지만 딥러닝에 대해서도 본격적인 공부를 해보려고 한다.

1. 퍼셉트론 기초 개념

인공 신경망 모형의 하나인 퍼셉트론은 1957년에 Rosenblatt라는 사람에 의해서 처음 고안된 아주 오래된? 알고리즘이다. 일반적으로 인공 신경망 시스템은 동물의 신경계를 본따 만들었기 때문에 개념적으로나 그 형태로나 비슷한 부분이 많다. 아래 왼쪽의 뉴런(neuron) 그림은 생물을 공부해본 사람들은 모두 한 번쯤은 봤을 것이다. 생물심리학을 공부할 때 또 봤다…

출처: https://www.slideshare.net/jbhuang/lecture-29-convolutional-neural-networks-computer-vision-spring2015

퍼셉트론은 다수의 신호(Input)을 입력받아서 하나의 신호(Output)을 출력한다 이는 뉴런이 전기신호를 내보내 정보를 전달하는 것과 비슷해 보인다. 그리고 뉴런의 수상돌기나 축색돌기처럼 신호를 전달하는 역할을(정확한 말은 아니고 편의상 이렇게 설명… 용어가 아직도 기억이 나다니…) 퍼셉트론에서는 weight가 그 역할을 한다. 가중치라고 부르는 이 weight는 각각의 입력신호에 부여되어 입력신호와의 계산을 하고 신호의 총합이 정해진 임계값(θ; theta,세타)을 넘었을 때 1을 출력한다. (이를 뉴련의 활성화activation 으로도 표현) 넘지 못하면 0 또는 -1을 출력한다.

각 입력신호에는 고유한 weight가 부여되며 weight가 클수록 해당 신호가 중요하다고 볼 수 있다.

여기서 기계학습이 하는 일은 이 weight(입력을 조절하니 매개변수로도 볼 수 있음)의 값을 정하는 작업이라고 할 수 있다.학습 알고리즘에 따라 방식이 다를 뿐 이 weight를 만들어내는 것이 학습이라는 차원에서는 모두 같다고 할 수 있다.

퍼셉트론의 출력 값은 앞에서 말했듯이 1 또는 0(or -1)이기 때문에 선형 분류(linear classifier) 모형이라고도 볼 수 있다. 보통 실수형의 입력 벡터를 받아 이들의 선형조합을 계산하는 것이며 다른 포스팅에서 다룬 벡터의 내적과도 유사하다. 선형 분류는 저 아래 그림에서 어떤 것인지 보면 알 수 있는데 간단하게 설명하면 초등학교 때 옆에 앉은 짝꿍과 티격태격하다 책상 중간에 선을 쫙 긋고 “이 선을 넘으면 다 내거”라고 했던 기억이 한번쯤은 있을지도 모르겠다. 선형 분류는 이와 비슷하게 평면 상에 선을 쫙 그어서 여기 넘으면 A, 못 넘으면 B 이런식으로 분류하는 것이다.

2. 퍼셉트론 학습 방법

처음에는 임의로 설정된 weight로 시작한다.

학습 데이터를 퍼셉트론 모형에 입력하며 분류가 잘못됐을 때 weight를 개선해 나간다.

weight를 개선해 나간다는 의미는 우리가 수학 문제를 잘못 풀었을 때 선생님이 다시 풀어오라고 하면 정답에 맞게 풀기 위해서 다시 풀고 다시 풀고 하다가 정답을 맞추는 것과 비슷하다. 그래서 학습이라고 부른다. 이 학습이라는 말이 실제 우리가 생각하는 학습의 개념과 유사한 점이 많아 학습 심리학에서 공부했던 내용을 추후에 접목해서 따로 소개하고자 한다.

출처: https://www.slideshare.net/Nicolas_Nicolov/machine-learning-14528792

퍼셉트론은 모든 학습 데이터를 정확히 분류시킬 때까지 학습이 진행되기 때문에 학습 데이터가 선형적으로 분리될 수 있을 때 적합한 알고리즘이다. 이와 관련된 퍼셉트론 모형이 가지는 한계는 후에 설명하겠다. 선형분류는 아래와 같이 선으로 분류하는 것을 의미한다. 학습이 반복될수록 선의 기울기가 달라지는 것을 볼 수 있다. 학습을 하면서 weight가 계속 조정(adjust)되는 것이다.

출처: https://en.wikipedia.org/wiki/Perceptron

3. 가중치와 편향

앞의 퍼셉트론 수식에서 나오는 세타 θ를 -b로 치환하여 좌변으로 넘기면

b + w1x1 + w2x2 <0 => 0

b + w1x1 + w2x2 >=0 => 1

과 같이 되며 여기에서 b를 편향(bias)라고 할 수 있다. 기계학습 분야에서는 모델이 학습 데이터에 과적합(overfitting)되는 것을 방지하는 것이 중요하다. 여기서 과적합이라 함은 모델이 엄청 유연해서 학습 데이터는 귀신같이 잘 분류하지만, 다른 데이터를 넣어봤을 때는 제대로 성능을 발휘하지 못하는 것을 말한다. 어느 데이터를 넣어도 일반적으로 잘 들어맞는 모델을 만드는 것이 중요하다.

따라서 앞에서 설명했듯이 편향은 θ(theta)로 학습 데이터(Input)이 가중치와 계산되어 넘어야 하는 임계점으로 이 값이 높으면 높을 수록 그만큼 분류의 기준이 엄격하다는 것을 의미한다. 그래서 편향이 높을 수록 모델이 간단해지는 경향이 있으며 (변수가 적고 더 일반화 되는 경우) 오히려 과소적합(underfitting)의 위험이 발생하게 된다. 반대로 편향이 낮을수록 한계점이 낮아 데이터의 허용범위가 넓어지는 만큼 학습 데이터에만 잘 들어맞는 모델이 만들어질 수 있으며 모델이 더욱 복잡해질 것이다. 허용범위가 넓어지는 만큼 필요 없는 노이즈가 포함될 가능성도 높다. 이를 편향과 분산의 트레이드오프 관계라고 보통 부르며 기회가 되면 이 부분을 더 다뤄보도록 하겠다. (포스팅 추가)

쉽게 예를 들어 ‘다문화’와 연결해서도 생각해 볼 수 있을 것 같다. 정확한 의미는 다르지만 유럽에서는 경제성장을 위해서 다국적의 사람들의 이민을 쉽게 허용해주었고 그들의 고급 노동력뿐만 아니라 그 아래 노동력도 포함해서 많은 인력을 수급하였다. 그 결과 경제성장의 밑거름이 되었다. ( + ; 학습한 모델이 잘 들어맞는 상황) 하지만, 다문화의 차이로 인한 갈등, 범죄율 상승 등의 문제가 발생하였다. ( – 손해; overfitting) 그렇다고 이민정책을 엄격하게 잡으면 사람들을 적게 받아 큰 플러스 효과를 보지 못할 수 있다. (- 손해; underfitting)

위의 예시는 적절하다고 볼 수는 없으나 결국 그 핵심은 학습의 과정에서 불순물(Noise)가 얼마나 포함되고 이것을 잘 걸러내줄 수 있느냐가 관건임을 말하고 싶었던 것이다.

요약하면, 가중치(weight)는 입력신호가 결과 출력에 주는 영향도를 조절하는 매개변수이고, 편향(bias)은 뉴런(또는 노드; x를 의미)이 얼마나 쉽게 활성화(1로 출력; activation)되느냐를 조정하는(adjust) 매개변수이다.

4. 퍼셉트론의 한계점

하지만 퍼셉트론이 인공지능 분야에서 센세이션을 불러일으켰고 연구 과제도 이쪽으로 몰렸으나 이것이 가지는 한계점이 밝혀지면서 한동안 소외 받는 이론이 되었다. 퍼셉트론을 제시한 로젠블랫은 자살 같은 사고로 세상을 떠났고 시간이 흐른 뒤에야 그의 업적이 재조명 받았다. 퍼셉트론의 한계는 선형으로 분류를 할 수 있지만 XOR와 같이 선형 분류만 가능하며 비선형 분류는 불가능하다는 점이다.

XOR 논리는 exclusive(배타적) 논리연산이다. 아래의 진리표를 보면, x1과 x2 중 어느 한쪽이 1일 때만 1을 출력한다.

x1 x2 y 0 0 0 1 0 1 0 1 1 1 1 0

아래의 그림을 보면 XOR에서는 선형으로(직선 하나로) 분류가 불가능함을 알 수 있습니다.

출처: http://ecee.colorado.edu/~ecen4831/lectures/NNet3.html

퍼셉트론의 한계를 간략히 말하면, 직선 하나로 나눈 영역만 표현할 수 있어 XOR과 같은 데이터 형태는 분류가 불가능하다는 한계가 있다.

5. 다층 퍼셉트론을 통한 한계 극복

단일 퍼셉트론으로는 XOR을 분류할 수 없지만, 다층 퍼셉트론을 만들면 이를 극복할 수 있습니다. 다층(multi-layer)이라는 말은 하나의 퍼셉트론에 또 다른 퍼셉트론을 덧붙인다는 의미로 볼 수 있다. 단층 퍼셉트론이 비선형 영역을 분리할 수 없다는 것이 문제이며 다층으로 할 경우 비선형으로 이를 해결할 수 있다.

출처: https://commons.wikimedia.org/wiki/File:Perceptron_XOR.jpg

이런식으로 층을 겹겹이 쌓아나가면서 선형 분류만으로는 풀지 못했던 문제를 비선형적으로 풀 수 있게 된다.

퍼셉트론의 알고리즘은 문과생도 바로 이해할 수 있었던 아주아주 쉬운 알고리즘이다. 신경망의 기초가 되므로 이번에 이해한 내용은 그 베이스로 중요하다고 할 수 있다.

퍼셉트론 (Perceptron) 구조와 학습, 퍼셉트론 python 코드

print ( “predict (before traning)” , w ) for epoch in range ( 50 ): for x_val , y_val in zip ( X , Y ): update = 0.01 * ( y_val – predict ( x_val )) w [ 1 :] += update * x_val w [ 0 ] += update print ( “predict (after traning)” , w )

4-1. 퍼셉트론

딥러닝의 가장 기초적인 형태인 퍼셉트론 알고리즘의 계산 방식을 실습합니다.

(1)퍼셉트론은 각 변수에 가중치를 두어 곱한 다음 이 값을 전부 합칩니다.(Net input function)

(2)합쳐진 값을 기준점을 두고 분류합니다. (Activation function)

(3)이 결과값이 실제값과 일치하는지를 판단하여 최초 설정한 가중치를 보정합니다.(Error)

(1)퍼셉트론 실습을 진행할 시트를 하나 만듭니다.

(2)복사본 시트에서 전용면적, 층, 거래금액 열을 복사하여 B4셀을 기준으로 붙여넣습니다. 열머리글에 나중에 사용할 변수명(X1, X2, Y)를 함께 입력합니다. 전용면적을 전용면적(X1), 층을 층(X2), 거래금액을 거래금액(Y)로 수정합니다.

(3)X0에 해당하는 절편(머신러닝, 딥러닝에서는 BIAS로 표현)을 A열에 만듭니다. A4셀에는 열머리글인 ‘절편(X0)’를, A5셀부터는 1을 입력하여 마지막까지 채워줍니다.

(4)퍼셉트론으로 고가아파트인지 저가아파트인지를 분류할 것이므로 이 분류를 위한 기준인 중위값을 C1셀에 계산합니다. 수식에 =MEDIAN(D5:D322) 을 입력합니다.

(5)E열에는 거래금액의 중위값인 C1셀값 이상이면 1(고가아파트), 미만이면 0(저가아파트)로 분류하겠습니다. E5셀에 =IF(D5>=$C$1,1,0) 를 입력하고 마지막까지 채워줍니다.

8억7천250만원 이상은 1로, 미만은 0으로 잘 분류가 되었는지 확인합니다.

(1)3개의 가중치(W0, W1, W2) 값을 임의로 1로 지정합니다. 퍼셉트론이 학습을 진행하면서, 이 가중치를 변화시키는 것이기 때문에 최초값에 큰 의미를 두지 않아도 됩니다.

(2)1개의 절편(X0)과 2개의 변수(X1, X2)를 3개의 가중치와 각각 곱합니다. I5셀에는 절편에 대한 첫 번째 가중치인 W0와 절편값인 X0를 곱해줍니다. 수식에 =A5*F5 를 입력합니다. J5셀에는 W1과 전용면적에 해당하는 X1을 곱해줍니다. 수식에 =B5*G5 를 입력합니다. K5셀에는 W2와 층에 해당하는 X2를 곱해줍니다. 수식에 =C5*H5 를 입력합니다.

(3)이제 이 3가지 값을 합해줍니다. L5셀에 =I5+J5+K5 를 입력합니다.

(4)합해진 결과값이 0이상이면 1, 0미만이면 0을 얻는 조건처리를 하겠습니다. 퍼셉트론의 구조 중 Activation Function에 해당하는 부분입니다. M5셀에 =IF(L5>=0,1,0) 를 입력합니다.

(5)실제값(거래금액(Y))과 계산값을 비교하여 오차가 있는지 계산합니다. 만약 계산값이 실제값보다 크다면 값을 줄여주어야 오차가 줄어들 것이고, 계산값이 실제값보다 적다면 값을 키워주어야 오차가 줄어들 것입니다. N5셀에 =E5-M5 를 입력하여 오차를 구합니다.

오차가 많이 발생했네요. 이 오차에 따라 가중치를 수정해 줍니다. 계산값이 실제값보다 크면 기존 가중치에 음수를 더해주어 가중치를 줄여주고, 계산값이 실제갑보다 작으면 기존 가중치에 양수를 더해주어 가중치를 키워주겠습니다.

이를 위해 기존 가중치에 얼마를 더해줄지를 결정해야 합니다. 이 값은 오차(오차의 부호) * X값 * 학습률으로 계산합니다. 오차를 곱해서 가중치를 더할지 빼줄지를 결정합니다. X값의 크기가 다 제각각이기 때문에 이를 반영해주기 위해 X값을 곱해주고 마지막으로 얼마나 큰 폭으로 가중치를 수정할지를 결정하는 학습률을 곱해줍니다.

(1)C2셀에 학습률을 0.01로 지정하여 입력합니다. 학습률에 따라 퍼셉트론이 가중치를 조정하는 폭이 달라집니다. 1보다 적은 수로 지정하면 됩니다. 이 실습에서는 0.01로 지정하겠습니다. 보통은 0.01이하의 숫자로 지정합니다.

(2)오차(오차의 부호) * X값 * 학습률을 계산합니다. 오차는 N5셀, X값은 A5, B5, C5, 학습률은 C2셀에 있습니다. O5에는 =A5*$N5*$C$2 , P5에는 =B5*$N5*$C$2 , Q5에는 =C5*$N5*$C$2 수식을 입력하여 증감시킬 가중치를 구합니다.

이제 2번째 행에 대한 새로운 가중치를 구하겠습니다. 이전 행의 가중치와 가중치 증감을 더해주면 됩니다. 가중치 증감 부분에서 가중치를 줄여줄 경우에는 음수의 결과가 나오도록 되어 있기 때문에 이 두 값을 더해주면 가중치가 증가하거나 감소하게 됩니다.

(1)F6, G6, H6셀에 각각 =F5+O5 , =G5+P5 , =H5+Q5 를 입력합니다. 첫 번째 행의 오류를 반영한 수정된 가중치가 만들어졌습니다. (2)I열부터 Q열까지의 수식은 첫 번째 행과 동일하므로 복사한 후 붙여넣습니다.

그 다음 2번째 행(F6:Q6)을 아래 빈 영역에 채워줍니다.

이렇게 전체 데이터에 대한 학습이 1회 끝난 것을 epoch라고 표현합니다.

(1)마지막 행까지 계산을 한 마지막 가중치가 얼마인지 밑에까지 스크롤하지 않아도 확인할 수 있도록 F2, G2, H2셀에 각각 =F322 , =G322 , =H322 값을 가져옵니다. (2)성능이 얼마나 좋은지 알아보기 위해 정답률을 구하겠습니다. 우선 정답수를 구합니다. 정답수는 오차열에 0이 몇 개인지 세어서 구합니다. N2셀에 =COUNTIF($N$5:$N$322,”0″) 를 입력하여 구합니다. COUNTIF함수는 대상범위 내에 조건에 맞는 셀이 몇 개인지 세어주는 함수입니다. 오답수는 오차열에 있는 -1과 1이 몇 개인지 세어서 합하면 됩니다. P2셀에 =COUNTIF($N$5:$N$322,”-1″)+COUNTIF($N$5:$N$322,”1″) 를 입력하여 구합니다. 전체 데이터수가 318개인데 정답수와 오답수를 합하니 318로 잘 계산된 것을 확인할 수 있습니다.

정답수 / (정답수+오답수)를 계산하여 정답률을 구하겠습니다. N1셀에 =N2/(N2+P2) 를 입력합니다.

(1)1 epoch가 끝나서 계산된 가중치를 복사하여 (2)영역에 값만 붙여넣기(복사 > 오른쪽마우스 클릭 > 선택하여 붙여넣기 > ‘값’ 선택) 합니다. (3)최초 가중치 값이 바뀌게 되면 다시 계산이 되고(2번재 epoch) (4)새로운 가중치가 계산됩니다. (5)정답률이 약간 상승했습니다. 정답률은 이렇게 상승할 때도 있지만, 감소할 때도 있습니다. epoch를 계속하면 조금씩 상승합니다. 이렇게 계속해서 여러 epoch를 계산한 후 최종 결과를 얻게 됩니다.

이제까지 딥러닝의 가장 기초적인 형태인 퍼셉트론에 대해 실습했습니다.

궁금하신 점이 있으시면 [email protected]로 메일보내주세요.

어려운 내용 따라하시느라 수고 많으셨습니다. 감사합니다.

[Machine Learning] 퍼셉트론 (Perceptron)

퍼셉트론 (Perceptron)

신경망 모델의 역사를 거슬러 올라가보면, 1943년에 McClulloch & Pitts에 의한 신경세포의 계산 모델이 있다.

이들은 개구리 두뇌의 신경세포를 보고 신경세포의 수학적 특성에 대한 모델링을 시작하였는데, 이는 신경세포의 동작이 단순한 동작임을 알아내는 계기가 되었다.

이후 1957년 로젠블랏(Rosenblatt)이 학습 가능한 신경망 모델을 제안하였는데 그것이 바로 퍼셉트론이다. 퍼셉트론은 우리말로 인식, 인지라는 뜻을 가지고 있다.

위 그림은 퍼셉트론 모델의 구조이다.

* x0 … xd는 들어오는 신호(입력)를 나타낸다.

* w0 … wd는 가중치이며 시냅스 역할을 한다.

시냅스로 신호가 들어올 때, 강화 or 감쇄되어 들어오는데 이러한 효과를 가중치로 나타낸다.

* 원하는 결과가 나오도록 “가중치”를 결정하는 방법을 만들어 내는데, 이 가중치를 결정하는 것을 “학습”이라고 부른다.

퍼셉트론 계산 식

위 식으로 나타낼 수 있으며, 임계값 이상이면 내보내기 위해 오른쪽 사진과 같은 계단모양의 활성화 함수를 사용한다.

이 함수는 식의 계산 값이 0 이상이면 1, 아니면 0이 나오도록 한다.

퍼셉트론 동작 함수

퍼셉트론 동작 함수는 간단하지만 학습이 제한적이라는 단점이 있다.

* dot()함수 : 내적 함수

* weights[1:] : w1…wd 가중치

* weights[0] : w0 (b)

OR 연산을 수행하는 퍼셉트론

OR 연산 OR연산을 하는 함수

X2 = -X1 + 0.5 위 직선을 이렇게 나타낼 수 있다.

직선을 중심으로 위쪽은 +값, 아래쪽은 -값이 되는데 이것을 활성화 함수에 적용하면 위쪽은 1, 아래쪽은 0으로 나타낼 수 있다.

따라서 퍼셉트론은 OR 연산을 하는 함수를 만들어낼 수 있다 !!!!!!!

cf) AND연산은 (1,1) 아래에 직선을 만들어 나타낼 수 있다.

이렇게 -0.5, 1 1과 같이 가중치를 준 상태에서만 OR연산이 가능한 것은 아니다.

퍼셉트론의 학습 알고리즘을 사용하게 되면,

주어진 입력에 대한 출력이 나와야 한다는 학습데이터들로부터 가중치를 자동으로 찾을 수 있다.

선형 분리 불가 문제 (linearly inseparable problem)

선형 분리 가능 문제(왼쪽)와 선형 분리 불가 문제(중간), XOR의 동작(오론쪽)

퍼셉트론이 나타내는 식은 Σwi*xi + b 이므로 2차원 공간에서는 직선이다.

하지만 직선으로 XOR 문제에서는 선형 분리가 불가능하다.

이를 해결하기 위해 다층 퍼셉트론(multilayer Perceptron, MLP)가 나오게 되었다.

기계학습] 02.인공뉴런과 퍼셉트론의 원리 두번째-퍼셉트론의 파라미터 학습알고리즘

반응형

지난 포스트에는 퍼셉트론 모델에 대한 설명과 파이썬으로 퍼셉트론을 구현해 보았다. 이번 시간에는 지난 포스트에 이어 이번 포스트는 퍼셉트론의 최적 가중치 계산법, 즉 학습 알고리즘에 대해서 알아볼 것이다.

1. 퍼셉트론의 파라미터와 수학적 이해

퍼셉트론의 파라미터는 가중치(Weight)와 편향(Bias)로 입력신호에 대해 아래와 같은 영향을 준다.

(1) 가중치(W) : 여러 입력 신호 중 출력신호에 영향을 주는 중요도를 결정한다.

(2) 편향(b) : 활성함수가 입력신호에 대해 얼마나 민감하게 반응할지 결정한다.

퍼셉트론의 원리는 위 그림처럼 여러 입력신호의 총 합이 임계치를 넘어설 경우 1을 넘어시지 않을경우 0을 반환하는 것이다. 이를 수학적으로 표현하면 아래와 같다.

혹은 식을 간단하게 하기위해 다음과 같이 표현 할 수도 있다.

이 때 임계값(threshold)를 갖는 활성함수를 아래와 같이 정의할 때 출력 벡터 O 는 아래와 같다.

2. 퍼셉트론의 사용과 학습

이렇게 구성된 퍼셉트론은 아래와 같은 판별경계를 생성하여 출력 바이너리한 출력값을 내보내게 된다.

하지만 로젠블랫의 퍼셉트론이 초기 각광 받았던 이유는 MCP 뉴런의 개념을 컴퓨터로 옮긴것이 아니라, 파라미터를 학습하는 알고리즘에 있었다. 우리가 퍼셉트론을 사용하고 공부하는 이유는 사실상 예측이고 이 예측을 위한 계산을 컴퓨터에게 일임하는데 의의가 있다. 이때 컴퓨터가 정확한 예측을 하기 위해서는 최적의 파라미터가 필요하고 예측을 위한 최적 파라미터를 학습 알고리즘을 통해 계산하게 된다.

(1) 퍼셉트론 학습 알고리즘 : 파라미터 최적화 알고리즘

1단계 : 가중치를 0이나 0에 가까운 랜덤 숫자로 초기화 한다.

2단계 : 출력값 y와 예측값 y^를 비교한다.

3단계 : 오차를 감소시키는 방향으로 가중치를 업데이트한다.

w_i 는 가중치 벡터로 –(1) 에서 △w_i를 더해 오차를 줄이는 가중치로 업데이트 되는 과정을 표현 한 것이다. 이 때 –(2)의 △w_i 는 예측값과 실제값의 오차에 학습률(n : It calls eta)을 곱해 결정된다. 설명과 함께 퍼셉트론이 어떻게 가중치를 업데이트하는지 살펴보자. 만약 실제 값이 1인데 예측값을 1로 잘 예측한 경우를 살펴보자.

이 경우 y – y^ =0 이 되기 때문에 가중치를 0만큼 업데이트 시키게된다. 즉 업데이트 시키지 않는다. 하지만 실제 값이 1인데 예측값을 0으로 퍼셉트론이 예측했다고 가정해보자

학습률이 0.5이고 x의 값이 2일 경우 퍼셉트론은 기존의 가중치에 1을 더함으로써 다음 입력에서 활성함수로 가는 누적신호를 증가시킨다. 따라서 같은 신호지만 업데이트된 가중치로 인해 1로 분류될 확률이 증가하는 것이다. 반면 0인데 1로 예측했을 경우

가중치를 – 1만큼 감소시키는 방향으로 업데이트 하여 다음번 입력때 활성이 덜 되도록 하여 0으로 출력될 가능성을 높인다.

3. 파이썬을 활용한 퍼셉트론의 모델 구현 : iris 데이터 분류하기

준비 : 패키지 설치 numpy(행렬 곱 및 기타 연산의 편리를 위해)와 scikit-learn(iris 데이터를 갖고오기 위해)

1 2 $ pip install numpy $ pip install sklearn cs

(1) 데이터 로드 및 준비

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 from sklearn.datasets import load_iris iris = load_iris() iris_features = iris[ ‘data’ ] iris_targe = iris[ ‘target’ ] iris_features.shape, iris_targe.shape > > (( 150 , 4 ), ( 150 ,)) # 우리는 여기서 2가지 변수와 2가지 target만 사용할 예정입니다. # iris 데이터는 3가지 target이 50개 50개 50개 순서대로 정렬돼 있기 때문에 # 상위 100개의 데이터를 갖고 와서 2가지 target만 사용하게 됩니다. X = iris_features[: 100 ,: 2 ] y = iris_targe[: 100 ] X.shape, y.shape > > (( 100 , 2 ), ( 100 ,)) Colored by Color Scripter cs

만든 훈련데이터를 시각화 한 결과 아래와 같은 분포를 갖는다.

이제 본격적으로 퍼셉트론을 아래 3단계를 통해 구현해

1단계 : 가중치를 0이나 0에 가까운 랜덤 숫자로 초기화 한다.

2단계 : 출력값 y와 예측값 y^를 비교한다.

3단계 : 오차를 감소시키는 방향으로 가중치를 업데이트한다.

(1) 1 단계

1 2 w = np.zeros( 1 + X.shape[ 1 ]) > > array([ 0. , 0. , 0. ]) cs

이기 때문에 가중치 벡터 w는 array([ 0., 0., 0.]) 의 모양을 갖는다. 0으로 초기화된 가중치와 편향을 갖는 퍼셉트론의 결과는 아래와 같다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # 최초 분류 input_signal = np.dot(X, w[ 1 :]) + w[ 0 ] input_signal > > array([ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ]) def out_put(X): return np.where(X > = 0. 0 , 1 , 0 ) pred_y = out_put(input_signal) pred_y > > array([ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ]) Colored by Color Scripter cs

모든 가중치와 편향이 0이었기 때문에 자연스럽게 입력신호는 전부 0이 입력된다. 따라서 0보다 같거나 크면 1을 출력하도록 활성함수를 정의했기 때문에 모든 결과는 1로 나오게 된다. 따라서 아래와 같은 판별경계를 퍼셉트론은 만들어 데이터를 분류를 한다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 y > > array([ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ]) delta_y = y – pred_y delta_y > > array([ – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , – 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]) # 결과의 정확도 : 0.5 np.abs((y – pred_y).sum() / 100 ) > > 0. 5 Colored by Color Scripter cs

최초 퍼셉트론의 정확도는 50% 이다. 그럼 이제부터 가중치를 업데이트하여 퍼셉트론의 정확돌르 높여보자.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 eta = 0. 01 idx = 0 for xi, target in zip(X, y): = eta * (target – pred_y[idx]) # updated_weta(targetpred_y[idx]) # 1 :] + = updated_w * xi # w[:]updated_wxi # w[ 0 ] + = updated_w if idx % 10 = = 0 : print ( “{0}번째 예제가 입력됐습니다” . format (idx)) print ( “w[1:]: ” ,w[ 1 :]) print ( “updated_w: ” ,updated_w) print ( “w[0]: ” ,w[ 0 ]) print ( ”

” ) idx + = 1 if updated_w = = 0 : break > > 0번째 예제가 입력됐습니다w[ 1 :]: [ – 0. 051 – 0. 035 ] updated_w: – 0. 01 w[ 0 ]: – 0. 01 10번째 예제가 입력됐습니다 w[ 1 :]: [ – 0. 54 – 0. 368 ] updated_w: – 0. 01 w[ 0 ]: – 0. 11 20번째 예제가 입력됐습니다 w[ 1 :]: [ – 1. 061 – 0. 73 ] updated_w: – 0. 01 w[ 0 ]: – 0. 21 30번째 예제가 입력됐습니다 w[ 1 :]: [ – 1. 556 – 1. 066 ] updated_w: – 0. 01 w[ 0 ]: – 0. 31 40번째 예제가 입력됐습니다 w[ 1 :]: [ – 2. 065 – 1. 411 ] updated_w: – 0. 01 w[ 0 ]: – 0. 41 50번째 예제가 입력됐습니다 w[ 1 :]: [ – 2. 503 – 1. 709 ] updated_w: 0. 0 w[ 0 ]: – 0. 5 Colored by Color Scripter cs

그 결과 옳게 맞추기 시작한 50번째 까지 가중치 업데이트가 진행되는 것을 알 수 있다. 전부 1로 예측한 결과 1로 예측한 부분을 0으로 예측하도록 가중치가 바뀌었기 때문에 결과를 보면 아래처럼 전부 0으로 바뀌었을 것이다 .

1 2 3 4 5 6 pred_y > > array([ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ]) Colored by Color Scripter cs

자 이제 이 과정을 계속 반복하여 적절한 파라미터를 찾아보자

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 # 1단계 : 가중치 초기화 w = np.zeros( 1 + X.shape[ 1 ]) # 최초 분류 input_signal = np.dot(X, w[ 1 :]) + w[ 0 ] def out_put(X): return np.where(X > = 0. 0 , 1 , 0 ) errors = [] epoch = 100 for time in range ( 0 ,epoch): print ( “{0}번째 반복 입니다” . format (time)) eta = 0. 01 idx = 0 for xi, target in zip(X, y): updated_w = eta * (target – pred_y[idx]) w[ 1 :] + = updated_w * xi w[ 0 ] + = updated_w idx + = 1 input_signal = np.dot(X, w[ 1 :]) + w[ 0 ] pred_y = out_put(input_signal) errors.append(((y – pred_y).sum()) / 100 ) print (((y – pred_y).sum()) / 100 ) if ((y – pred_y).sum()) / 100 = = 0 : break > > 0번째 반복 입니다 – 0. 5 1번째 반복 입니다 0. 5 2번째 반복 입니다 – 0. 5 3번째 반복 입니다 0. 5 4번째 반복 입니다 – 0. 5 5번째 반복 입니다 0. 47 6번째 반복 입니다 – 0. 5 7번째 반복 입니다 0. 0 Colored by Color Scripter cs

7번 반복하여 가중치를 업데이트한 결과 오차가 0인 퍼셉트론이 완성된 것을 확인 할 수 있다. 이 과정을 그림을 통해 본다면 아래처럼 나타낼 수 있다.

1 2 3 4 5 6 pred_y > > array([ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ]) Colored by Color Scripter cs

횟수가 늘어감에 따라 가중치가 업데이트 되어 판별경계가 데이터를 잘 분류하도록 변화하고 있음을 발견할 수 있다.

4. 요약

퍼셉트론을 수학적으로 표현하면 아래와 같이 표현 할 수 있다.

이 때 퍼셉트론의 파라미터는 가중치(편향이 포함된)이다. 이 때 최적 파라미터를 구하기 위한 알고리즘으로 아래와 같은 알고리즘을 사용한다.

그 결과 아래와 같은 과정을 갖으며 데이터를 잘 분류하도록 가중치가 업데이트 되고 종단에 오차가 감소함에 따라 적절한 판별경계를 찾아 분류하게 된다.

5.출처

* 1) Machine Learning with R Second Edition (2015), Brett Lantz , Packt

반응형

키워드에 대한 정보 퍼셉트론 가중치 계산

다음은 Bing에서 퍼셉트론 가중치 계산 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 Ch07_05.신경망(퍼셉트론 계산 예제)05

  • 동영상
  • 공유
  • 카메라폰
  • 동영상폰
  • 무료
  • 올리기

Ch07_05.신경망(퍼셉트론 #계산 #예제)05


YouTube에서 퍼셉트론 가중치 계산 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 Ch07_05.신경망(퍼셉트론 계산 예제)05 | 퍼셉트론 가중치 계산, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  꼬치 영어 로 | 꼬치. 영어로44 인기 답변 업데이트

Leave a Comment