퍼셉트론 가중치 계산 | Ch07_05.신경망(퍼셉트론 계산 예제)05 답을 믿으세요

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

위와 같이 입력의 각 신호가 1, 2, 5 이며 가중치가 각 0.35, 0.25, 0.08이며 활성함수가 계단함수일 때 신호 출력을 계산해 보자. 퍼셉트론 계산식을 그대로 대입하면, 세 입력 신호가 가중치를 지나 합쳐지면 1.25라는 값이 만들어진다.

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

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

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

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

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

가중치(weight): 퍼셉트론의 학습 목표는 학습 벡터를 두 부류로 선형 분류 … 활성홤수(activation function): 뉴런에서 계산된 net값이 임계치보다 …

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

Source: untitledtblog.tistory.com

Date Published: 7/5/2021

View: 6118

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

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

+ 여기에 표시

Source: sacko.tistory.com

Date Published: 12/28/2021

View: 5598

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

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

+ 더 읽기

Source: velog.io

Date Published: 1/20/2022

View: 1381

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

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

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

Source: ysbsb.github.io

Date Published: 10/12/2022

View: 670

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

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

+ 여기에 더 보기

Source: ehpub.co.kr

Date Published: 10/5/2021

View: 5163

01. 퍼셉트론 – Perceptron

1. 퍼셉트론이란? · ​과 ​는 입력 신호, ​는 출력 신호, ​과 ​는 가중치(weight)를 의미한다. · 원을 뉴런 또는 노드라고 부른다. · 입력 신호가 뉴런에 …

+ 여기를 클릭

Source: excelsior-cjh.tistory.com

Date Published: 12/29/2022

View: 488

2 장: 신경망 – 서울대학교

시그모이드 뉴런 신경망의 경우 선형 퍼셉트론과 마찬가지로 가중치 입력을 계산한다. 다른 점은 입력의 총합을 그대로 출력하지 않고 비선형의 시그모이드 전이 함수를 …

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

Source: ocw.snu.ac.kr

Date Published: 1/13/2022

View: 7690

딥러닝 기초 부수기 – 퍼셉트론(perceptron) – 삶은 계란

입력 신호가 뉴런에 보내질 때, w1*x1과 w2*x2 형태로 각각 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 임계값(정해진 한계, θ)을 넘어설 …

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

Source: ksm2853305.tistory.com

Date Published: 3/29/2021

View: 7654

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

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

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

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

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

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

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

단층 퍼셉트론(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 연산을 올바르게 학습하게된 퍼셉트론의 가중치는 아래와 같다.

문과생도 이해하는 딥러닝 (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 )

Perceptron

이번 포스팅은 ‘밑바닥 부터 시작하는 딥러닝’교재로 공부한 것을 정리했습니다.

퍼셉트론 – Perceptron

1. 퍼셉트론이란?

퍼셉트론(perceptron)은 프랑크 로젠블라트(Fank Rosenblatt)가 1957년에 고안안 알고리즘이다. 이 퍼셉트론이 바로 신경망(딥러닝)의 기원이 되는 알고리즘이다.

퍼셉트론은 다수의 신호(흐름이 있는)를 입력으로 받아 하나의 신호를 출력한다. 퍼셉트론은 이 신호를 입력으로 받아 ‘흐른다/안 흐른다'(1 또는 0)이라는 정보를 앞으로 전달한다.

위의 그림에서,

​과 ​는 입력 신호, ​는 출력 신호, ​과 ​는 가중치(weight)를 의미한다.

원을 뉴런 또는 노드 라고 부른다.

입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치 가 곱해진다( ​).

뉴런에서 전달 받은 신호의 총합이 임계값 ​를 넘을 때만 ​을 출력한다.

이것을 수식으로 나타내면, 아래와 같다.

퍼셉트론은 복수의 입력 신호 각각에 고유한 가중치를 부여한다. 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용하며, 가중치가 클수록 해당 신호가 그만큼 더 중요함을 뜻한다.

2. 단순한 논리 회로

2.1 AND 게이트

위의 표는 AND게이트 의 진리표이며 이 AND게이트를 퍼셉트론으로 표현해보자. 이를 위해서는 ​ 의 값을 적절하게 정해야 한다.

예를 들어,

일 때, AND 게이트의 조건을 만족한다.

2.2 NAND 게이트와 OR 게이트

NAND 게이트는 Not AND를 의미하며 AND 게이트의 출력을 반대로한 것과 같다.

OR 게이트는 입력 신호 중 하나 이상이 1이면 출력이 1이 되는 논리 회로다.

신경망 학습은 이 매개변수의 값을 정하는 작업을 컴퓨터가 자동으로 하도록 한다. 학습이란 적절한 매개변수 값을 정하는 작업 이며, 사람은 퍼셉트론의 구조(모델)를 고민하고 컴퓨터에 학습할 데이터를 주는 일을 한다.

위의 각 게이트(AND, NAND, OR)의 진리표들을 보면, 퍼셉트론 구조는 모두 동일하며 다른것은 매개변수( ​)의 값뿐이다. 따라서, 매개변수의 값만 적절히 조정하면 AND, NAND, OR을 구현할 수 있다!

3. 퍼셉트론 구현하기

3.1 기본적인 AND gate

import numpy as np

def AND_basic ( x1 , x2 ):

w1 , w2 , theta = 0.5 , 0.5 , 0.7

tmp = x1 * w1 + x2 * w2

if tmp < = theta : return 0 elif tmp > theta :

return 1

inputs = [( 0 , 0 ), ( 1 , 0 ), ( 0 , 1 ), ( 1 , 1 )]

for x1 , x2 in inputs :

y = AND_basic ( x1 , x2 )

print ( ‘({x1}, {x2}) -> {y}’ . format ( x1 = x1 , x2 = x2 , y = y ))

(0, 0) -> 0

(1, 0) -> 0

(0, 1) -> 0

(1, 1) -> 1

3.2 가중치와 편향 도입

위 2.1의 식에서 ​를 ​로 치환하면 다음과 같다.

위의 식에서 ​를 편향(bias) 이라 한다.

편향이라는 용어는 ‘한쪽으로 치우쳐 균형을 깬다’라는 의미를 담고 있다. 실제로 위의 식에서 두 입력( ​)이 모두 0이어도 결과로 (0이 아닌) 편향 값을 출력한다.

3.3 가중치와 편향 구현하기

가중치와 편향을 도입한 AND gate

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 < = 0 : return 0 else : return 1 inputs = [( 0 , 0 ), ( 1 , 0 ), ( 0 , 1 ), ( 1 , 1 )] ​ for x1 , x2 in inputs : y = AND ( x1 , x2 ) print ( '({x1}, {x2}) -> {y}’ . format ( x1 = x1 , x2 = x2 , y = y ))

(0, 0) -> 0

(1, 0) -> 0

(0, 1) -> 0

(1, 1) -> 1

NAND 게이트와 OR 게이트

def NAND ( 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 < = 0 : return 0 else : return 1 ​ def OR ( x1 , x2 ): x = np . array ([ x1 , x2 ]) w = np . array ([ 0.5 , 0.5 ]) b = - 0.2 tmp = np . sum ( w * x ) + b if tmp < = 0 : return 0 else : return 1 inputs = [( 0 , 0 ), ( 1 , 0 ), ( 0 , 1 ), ( 1 , 1 )] ​ print ( 'NAND :' ) for x1 , x2 in inputs : y = NAND ( x1 , x2 ) print ( '({x1}, {x2}) -> {y}’ . format ( x1 = x1 , x2 = x2 , y = y ))

print ( ‘OR :’ )

for x1 , x2 in inputs :

y = OR ( x1 , x2 )

print ( ‘({x1}, {x2}) -> {y}’ . format ( x1 = x1 , x2 = x2 , y = y ))

NAND :

(0, 0) -> 1

(1, 0) -> 1

(0, 1) -> 1

(1, 1) -> 0

OR :

(0, 0) -> 0

(1, 0) -> 1

(0, 1) -> 1

(1, 1) -> 1

4. 퍼셉트론의 한계

4.1 XOR 게이트

XOR 게이트는 베타적 논리합 이라는 논리 회로다.

단층 퍼셉트론으로 AND, NAND, OR 게이트는 구현 가능하지만, XOR 게이트는 구현할 수 없다. 퍼셉트론은 아래와 같이 직선 으로 나뉜 두 영역을 만든다. 하지만 XOR은 직선으로 두 영역을 나눌 수 없다.

4.2 선형과 비선형

만약 직선 즉, 선형이라는 제약을 없앤 비선형 이라면 아래와 같이 영역을 나눌 수 있다.

5. 다층 퍼셉트론

단층 퍼셉트론으로는 XOR을 구현할 수 없지만, 다층 퍼센트론(multi-layer perceptron) 으로 XOR 게이트를 구현할 수 있다.

먼저, 아래의 그림처럼 입력값 ​를 각각 NAND 와 OR 게이트에 보낸다음, 그 결과 값들을 AND 게이트에 보내면 XOR 게이트를 구현할 수 있다.

5.1 기존 게이트 조합하기

5.2 XOR 게이트 구현하기

def XOR ( x1 , x2 ):

s1 = NAND ( x1 , x2 )

s2 = OR ( x1 , x2 )

y = AND ( s1 , s2 )

return y

print ( ‘XOR :’ )

for x1 , x2 in inputs :

y = XOR ( x1 , x2 )

print ( ‘({x1}, {x2}) -> {y}’ . format ( x1 = x1 , x2 = x2 , y = y ))

XOR :

(0, 0) -> 0

(1, 0) -> 1

(0, 1) -> 1

(1, 1) -> 0

6. 정리

퍼셉트론은 입출력을 갖춘 알고리즘이다. 입력을 주면 정해진 규칙에 따른 값을 출력한다.

퍼셉트론에서는 ‘가중치’와 ‘편향’을 매개변수로 설정한다.

퍼셉트론으로 AND, OR 게이트 등의 논리 회로를 표현할 수 있다.

XOR 게이트는 단층 퍼셉트론으로는 표현할 수 없다.

2층 퍼셉트론을 이용하면 XOR 게이트를 표현할 수 있다.

단층 퍼셉트론은 직선형 영역만 표현할 수 있고, 다층 퍼셉트론은 비선형 영역도 표현할 수 있다.

다층 퍼셉트론은 (이론상) 컴퓨터를 표현할 수 있다.

퍼셉트론(perceptron)

딥러닝 기초 부수기 – 퍼셉트론(perceptron)

본 게시글은 한빛미디어 출판사의 ‘밑바닥부터 시작하는 딥러닝(저자: 사이토 고키)’ 도서 내용을 바탕으로 작성하였습니다.

1. 서론

이번 글에서는 신경망(딥러닝)의 기원이 되는 퍼셉트론(perceptron)에 대해 정리해보겠다.

2. 퍼셉트론이란?

(1) 퍼셉트론(perceptron)

퍼셉트론은 다수의 신호 를 입력받아 하나의 신호 를 출력한다. 1957년 프랑크 로젠블라트(Frank Rosenblatt)가 고안한 신경망(딥러닝)의 기원이 되는 알고리즘이다. ‘신호가 흐른다’는 의미를 1로, ‘신호가 흐르지 않는다’는 의미를 0으로 표시한다.

(2) 퍼셉트론 동작 원리

입력이 2개인 퍼셉트론의 예

x1과 x2는 입력 신호, y는 출력 신호, w1과 w2는 가중치, 원은 뉴런(노드)을 의미한다. 여기서 가중치는 각 신호가 결과에 주는 영향력을 조절한다. 가중치가 클수록 해당 신호가 그만큼 더 중요하다는 의미이다. 입력 신호가 뉴런에 보내질 때, w1*x1과 w2*x2 형태로 각각 고유한 가중치가 곱해진다. 뉴런에서 보내온 신호의 총합이 임계값(정해진 한계, θ)을 넘어설 때만 1을 출력한다.

(3) 퍼셉트론 수식

위에서 봤던 퍼셉트론 동작 원리를 수식으로 표현

3. 단순한 논리 회로

퍼셉트론으로 AND, NAND, OR 논리 회로를 표현할 수 있다.

(1) AND 게이트

AND 게이트 진리표

두 입력이 모두 1일 때만 1을 출력하고 그 외 경우에는 0을 출력한다.

(2) NAND 게이트

NAND 게이트 진리표

두 입력이 모두 1일 때만 0을 출력하고 그 외 경우에는 1을 출력한다.

(3) OR 게이트

OR 게이트 진리표

입력 중 하나 이상이 1이면 1을 출력한다.

위 3개의 게이트에서 중요한 점은, 퍼셉트론 구조는 동일하다는 것이다. 다른 것은 매개변수(가중치, 임계값)의 값이다.

4. 퍼셉트론 구현

퍼셉트론을 파이썬(Python)으로 구현한 모습을 살펴보자.

(1) 간단한 구현

# AND 게이트 구현 def AND(x1, x2): # x1, x2 : 입력 w1, w2, theta = 0.5, 0.5, 0.7 # w1, w2 : 가중치 / theta : 임계값 tmp = x1*w1 + x2*w2 # tmp : 가중치를 곱한 입력의 총합 if tmp <= theta: return 0 elif tmp > theta: return 1

# AND 게이트 출력 결과 AND(0, 0) # 0을 출력 AND(1, 0) # 0을 출력 AND(0, 1) # 0을 출력 AND(1, 1) # 1을 출력

NAND 게이트, OR 게이트도 동일하게 구현할 수 있다. 다른 것은 w1, w2, theta의 값이다! 이렇게 구현하면 직관적이고 알기 쉽지만 편향(bias) 개념을 도입하여 구현을 수정할 수 있다.

(2) 가중치와 편향 도입

위에서 봤던 퍼셉트론 수식에서 θ를 -b로 치환하여 수식을 다시 정의할 수 있다. 기호 표기만 바꿨을 뿐 의미는 같다.

θ를 -b로 치환 후 좌변으로 넘긴 수식

위 수식에서 b를 편향(bias)이라고 한다. 편향은 뉴런이 얼마나 쉽게 활성화(결과로 1을 출력)하느냐를 조정한다. 예를 들자면 b가 -0.1인 경우, 각 입력에 가중치를 곱한 값들의 합이 0.1을 넘어설 때만 뉴런이 활성화된다. 위 수식을 해석하자면 입력에 가중치를 곱한 값과 편향을 합하는데, 그 값이 0을 넘으면 1을 출력하고 넘지 않으면 0을 출력한다는 의미이다. 앞으로는 문맥에 따라 가중치와 편향을 모두 ‘가중치 매개변수’라고 지칭한다.

(3) 가중치와 편향 구현

# 가중치와 편향을 도입한 AND 게이트 import numpy as np def AND(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) # 가중치 배열을 넘파이 배열로 변환 b = -0.7 # b : 편향 tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1 # 가중치와 편향을 도입한 NAND 게이트 import numpy as np def NAND(x1, x2): x = np.array([x1, x2]) w = np.array([-0.5, -0.5]) # AND 게이트의 w(가중치)와 다르다. b = 0.7 # AND 게이트의 b(편향)와 다르다. tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1 # 가중치와 편향을 도입한 OR 게이트 import numpy as np def OR(x1, x2): x = np.array([x1, x2]) w = np.array([0.5, 0.5]) # NAND 게이트의 w(가중치)와 다르다. b = -0.2 # AND, NAND 게이트의 b(편향)와 다르다. tmp = np.sum(w*x) + b if tmp <= 0: return 0 else: return 1 3개 게이트의 차이는 가중치 매개변수(가중치, 편향)의 값이다! 5. 퍼셉트론의 한계 XOR 게이트를 보며 퍼셉트론의 한계에 대해 살펴보자. (1) XOR 게이트 XOR 게이트 진리표 배타적 논리합이라는 논리 회로이다. 여기서 '배타적'은 자기 외에는 거부한다는 의미이다. 입력 중 한쪽이 1일 때만 1을 출력한다. XOR 게이트는 지금까지의 퍼셉트론으로는 구현이 불가하다. '(2) 선형과 비선형'에서 이유를 알아보자! (2) 선형과 비선형 OR 게이트 시각화 : 회색 영역은 0을 출력하는 영역. 전체 영역은 OR 게이트의 성질 만족 위 그림에서는 0을 원으로, 1을 삼각형으로 표시했다. 지금까지 본 퍼셉트론 수식은 직선으로 나뉜 두 영역(1을 출력하는 영역과 0을 출력하는 영역) 을 만든다. AND, NAND, OR 게이트를 만들려면 그림에 보이는 원과 삼각형을 직선으로 나눠야 한다. 이때 직선의 영역을 선형 영역이라 한다. 원과 삼각형은 XOR 게이트의 출력 XOR 게이트에서 원과 삼각형을 하나의 직선으로 나누는 것은 불가능하다! 이것이 XOR 게이트를 지금까지의 퍼셉트론으로 구현할 수 없는 이유이다. 하지만 직선이 아닌 곡선을 사용하면 XOR 게이트의 원과 삼각형을 나눌 수 있다! 이때 곡선의 영역을 비선형 영역이라 한다. 지금까지의 퍼셉트론으로는 곡선을 표현할 수 없지만, 다층 퍼셉트론으로는 표현할 수 있다! 6. 다층 퍼셉트론 지금까지 봤던 퍼셉트론은 층이 하나인 단층 퍼셉트론(single-layer perceptron)이다. 이번에는 층을 쌓아 만들 수 있는 다층 퍼셉트론(multi-layer perceptron)으로 XOR 게이트를 표현한 모습을 살펴볼 것이다. 다층 퍼셉트론 이전에, 기존 게이트를 조합하여 XOR 게이트를 구현한 모습을 먼저 봐보자. (1) 기존 게이트 조합하기 AND, NAND, OR 게이트 기호 AND, NAND, OR 게이트를 조합하여 구현한 XOR 게이트 기존 게이트를 조합하여 구현한 XOR 게이트의 진리표 (2) XOR 게이트 구현 # 기존 게이트를 조합하여 구현한 XOR 게이트 def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1, x2) y = AND(s1, s2) # NAND, OR 게이트의 출력이 AND 게이트의 입력으로 이어짐! return y # 기존 게이트를 조합하여 구현한 XOR 게이트 출력 결과 XOR(0, 0) # 0을 출력 XOR(1, 0) # 1을 출력 XOR(0, 1) # 1을 출력 XOR(1, 1) # 0을 출력 (3) XOR의 퍼셉트론 XOR은 2층 퍼셉트론이며, 층이 여러 개인 퍼셉트론을 다층 퍼셉트론(multi-layer perceptron)이라 한다. 위 그림의 퍼셉트론은 3층으로 구성되지만, 가중치를 갖는 층이 2개(0층~1층, 1층~2층) 이므로 '2층 퍼셉트론'이라 부르자! 단, 문헌에 따라서는 층수를 기준으로 '3층 퍼셉트론'이라 하는 경우도 있다고 한다! (4) XOR의 퍼셉트론 동작 방식 0층의 두 뉴런이 입력 신호를 받아 1층의 뉴런으로 신호를 보낸다. 신호를 받은 1층의 뉴런이 2층의 뉴런으로 신호를 보낸다. 신호를 받은 2층의 뉴런은 y를 출력한다. 다층 퍼셉트론 장점은 단층 퍼셉트론으로는 표현하지 못하는 것을 층을 늘려서 구현이 가능하다는 것이다!

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

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

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

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

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

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


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

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

See also  빨간불 우회전 신호 위반 | 14955회. 백 번도 넘게 설명드린 우회전 방법, 아직 못 들은 분들께 알려드립니다. 상위 19개 베스트 답변

Leave a Comment