lab
Neural Network
한국어

신경망이란

개요

간단히 말해서 신경망은 데이터를 입력하고 결과를 출력하는 기능입니다.

기능

해당 함수 형식을 정의하기 위해 MNIST 필기 숫자 이미지 인식을 예로 들어 보겠습니다.

  • 작업 유형: 이미지 분류
  • 입력: 이미지는 28 x 28=784 픽셀을 포함하며 각 픽셀은 실수로 표시됩니다.
  • 출력: 0-9
  • 작업 설명: 이미지에서 고유 번호 식별
  • 기능 정의
y=f(x1,x2,...,x784)xiR,i=1,...,784y{0,1,...,9}\begin{aligned} y &= f(x_1, x_2, ..., x_{784}) \\ &x_i \in \mathbb R, i = 1, ..., 784 \\ &y \in \{0, 1, ..., 9\} \end{aligned}

이것은 신경망의 엔트리 레벨 애플리케이션입니다. 입력은 784개의 입력 변수가 있는 함수에 해당하는 저해상도(28 x 28) 회색조 이미지입니다. 메가픽셀 컬러 이미지인 경우 해당 입력 변수는 300만 개에 이릅니다.


신경망이 일부 복잡한 문제를 해결하는 데 사용되며 해당 기능도 복잡하다는 것을 알 수 있습니다. 알고리즘의 구현은 해당 기능을 구성하는 것입니다.


그런 복잡한 기능을 구성하는 방법은 무엇입니까? 간단한 기능부터 시작할 수 있습니다. 가장 간단하고 성공적인 예는 디지털 회로입니다.

디지털 회로

디지털 회로는 컴퓨터의 초석이며 거대한 디지털 세계를 구축했습니다. 그러나 핵심은 AND, OR 및 NOT 논리 게이트로 구성됩니다.


논리 게이트 란 무엇입니까? 그것은 실제로 기능입니다. 그리고 그것들은 가장 간단한 기능입니다.

논리 게이트표현함수 형태
AND 게이트xyx \land yz=(x,y)z = \land(x, y)
OR 게이트xyx \lor yz=(x,y)z = \lor(x, y)
NOT 게이트¬x\lnot xy=¬(x)y = \lnot(x)
  • 변수 유형: 모든 부울 변수, 2개의 값: {T,F}\{T, F\}, 자연수(N\mathbb N) 및 실수(R\mathbb R)보다 훨씬 간단합니다.
  • 변수의 수: 단항 또는 이진 함수, 가장 단순한 형태의 함수
  • 함수 표현: 설명을 위해 진리표를 사용합니다. 이미지를 사용하지 않는 이유는 무엇입니까? 이산 기능이기 때문에 이미지에 약간의 고립된 점이 있는데, 이는 그다지 매력적이지 않습니다.

NOT 게이트

xx¬x\lnot x
TTFF
FFTT

NOT 게이트 이미지(FF에는 0, TT에는 1 사용)

AND 게이트、OR 게이트

xxyyxyx \land yxyx \lor y
TTTTTTTT
TTFFFFTT
FFTTFFTT
FFFFFFFF

AND 게이트 이미지

OR 게이트 이미지

조합 논리 게이트

더 강력한 기능을 얻으려면 간단한 논리 게이트를 결합하십시오.


새 이진 함수를 구성합니다.

  • XOR: xy=(x¬y)(¬xy)x \oplus y = (x \land \lnot y) \lor (\lnot x \land y)
  • XNOR: xy=(xy)(¬x¬y)x \odot y = (x \land y) \lor (\lnot x \land \lnot y)

다변수 함수를 구성합니다.

  • 3비트 AND 연산: f(x,y,z)=xyzf(x, y, z) = x \land y \land z
  • 8비트 가산기: f(x1,...,x8,y1,...,y8)f(x_1, ..., x_8, y_1, ..., y_8)
    • 16개의 Boolean 변수를 포함하는 16개 요소의 함수입니다.
  • 32비트 가산기: f(x1,...,x32,y1,...,y32)f(x*1, ..., x*{32}, y*1, ..., y*{32})
    • 64개의 Boolean 변수를 포함하는 64개 요소의 함수입니다.
    • 32비트 정수의 이진 함수로 간주할 수도 있습니다. f(x,y)x,yInt32f(x, y) \quad x, y \in \text{Int32}

요약하다

간단한 논리 게이트 기능을 결합하여 새로운 논리 기능을 구성할 수 있습니다. 32비트 정수의 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 연산과 32비트 단정밀도 부동 소수점 유형 등의 연산을 포함합니다.

프로그래밍 언어

프로그래밍 언어를 다시 살펴보겠습니다. Python을 예로 들어 Python의 요소를 살펴보십시오.

운영자

이름기호기능
논리 연산자and or not이진 및 단항 논리 함수
산술 연산자+, -, *, /, %, **, //이진 함수
비교 연산자==, !=, >, <, >=, <=이진 함수
...

부동 소수점 숫자 덧셈 연산자(+)를 예로 들면 함수 이미지는 다음과 같습니다.

f(x,y)=x+yf(x, y) = x + y

기능

Python에서 고유한 함수를 정의할 수 있습니다.

def f(x, y): return max(0, 2*x + 3*y - 3)

여기에 새로운 기능이 정의됩니다. "+, -, *, max" 및 기타 기능을 사용하여 새 기능을 구성합니다. 구성 방식도 기능 구성을 통해 이루어집니다.

요약하다

함수는 프로그래밍 언어의 모든 곳에 있습니다. 기본 기능을 결합하여 새로운 기능을 구성하고 새로운 알고리즘을 얻을 수 있습니다.

신경망

신경망도 기능입니다. 디지털 회로 및 프로그래밍 언어와 마찬가지로 간단한 기능으로 구성됩니다. 디지털 회로의 기본 단위는 AND, OR 및 NOT과 같은 논리 함수입니다. 프로그래밍 언어의 기본 단위는 다양한 연산자와 같은 함수이고 신경망의 기본 단위는 뉴런입니다.

뉴런

그렇다면 뉴런이란 무엇인가? 생물학적 뉴런은 입력 수상돌기와 출력 축삭이 있는 세포입니다. 그리고 신경망의 뉴런은 인공 뉴런이기도 하고 기능이기도 합니다. 좀 더 정확히 말하면 일종의 기능입니다.


뉴런의 입력 수는 변경될 수 있습니다. 즉, nn-요소 함수 f(x1,...,xn)f(x_1, ..., x_n)를 나타내며 nn은 서로 다를 수 있습니다. 뉴런.

신경망

뉴런은 서로 결합하여 신경망을 형성합니다. 아래 그림과 같이:

신경망에는 세 개의 뉴런이 있습니다(입력 뉴런은 계산하지 않음).

  • f1(x1,...,xn)f_1(x_1, ..., x_n)
  • f2(x1,...,xn)f_2(x_1, ..., x_n)
  • f3(x1,x2)f_3(x_1, x_2)

신경망이 나타내는 기능은 다음과 같습니다.

f(x1,...,xn)=f3(f1(x1,...,xn),f2(x1,...,xn))f(x_1, ..., x_n) = f_3(f_1(x_1, ..., x_n), f_2(x_1, ..., x_n))

요약하다

  1. 디지털 회로(하드웨어)의 핵심은 기능이며 기본 기능은 AND OR NOT 논리 게이트 기능입니다.
  2. 프로그래밍 언어(소프트웨어)의 핵심은 기능이며 기본 기능은 다양한 연산자 기능과 내장 기능(하드웨어 제공 또는 복합)입니다.
  3. 신경망의 핵심은 또한 기능이며 기본 기능은 뉴런입니다.
  4. 간단한 기능의 조합을 통해 새로운 기능을 구축할 수 있습니다. 신경망은 기능 합성 연산을 통해 뉴런 기능으로 구성된 기능입니다.

질문

뉴런이 나타내는 기능은 정확히 무엇입니까?

nn 요소 함수라는 것을 아는 것만으로는 충분하지 않습니다. 디지털 회로의 기본 단위 AND, OR 및 NOT 게이트는 모두 진리표를 나열하고 그림을 그립니다. 그러나 뉴런은 어떻습니까?