lab
Neural Network
Português

O que é rede neural

Visão geral

Em suma, a rede neural é uma função: dados de entrada, resultado de saída.

Função

Vamos usar o Reconhecimento de imagem de dígitos manuscritos MNIST como exemplo para definir a forma de função correspondente:

  • Tipo de tarefa: classificação de imagem
  • Input: uma imagem contém 28 x 28=784 pixels e cada pixel é representado por um número real
  • Saída: 0-9
  • Descrição da tarefa: identifique o número exclusivo da imagem
  • Definição da função
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}

Esta é uma aplicação de nível de entrada da Rede Neural. A entrada é uma imagem em tons de cinza de baixa resolução (28 x 28), correspondendo a uma função com 784 variáveis ​​de entrada. Se for uma imagem colorida de megapixels, as variáveis ​​de entrada correspondentes chegarão a 3 milhões.


Pode-se ver que a rede neural é usada para resolver alguns problemas complexos, e as funções correspondentes também são complexas. A realização do algoritmo é construir a função correspondente.


Como construir uma função tão complicada? Podemos começar com funções simples. O exemplo mais simples e bem-sucedido são os circuitos digitais.

Circuitos digitais

Os circuitos digitais são os pilares dos computadores e construíram nosso enorme mundo digital. Mas seu núcleo é composto de portas lógicas AND, OR e NOT.


O que é uma porta lógica? Na verdade é uma função. E são as funções mais simples.

Portão lógicoexpressãoformulário de função
E portãoxyx \land yz=(x,y)z = \land(x, y)
OR portãoxyx \lor yz=(x,y)z = \lor(x, y)
NÃO portão¬x\lnot xy=¬(x)y = \lnot(x)
  • Tipo de variável: Todas as variáveis ​​booleanas, apenas 2 valores: {T,F}\{T, F\}, muito mais simples que números naturais (N\mathbb N) e números reais (R\mathbb R).
  • Número de variáveis: função unária ou binária, que também é a forma mais simples de função
  • Representação da função: use tabela-verdade para descrição. Por que não usar imagens? Por ser uma função discreta, existem alguns pontos isolados na imagem, o que não é muito atrativo.

NÃO portão

xx¬x\lnot x
TTFF
FFTT

NÃO imagem do portão (use 0 para FF e 1 para TT)

portão AND, portão OR

xxyyxyx \land yxyx \lor y
TTTTTTTT
TTFFFFTT
FFTTFFTT
FFFFFFFF

AND gate image

OR imagem do portão

Porta lógica de combinação

Combine portas lógicas simples para obter funções mais poderosas.


Construa uma nova função binária:

  • 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)

Construa uma função multivariada:

  • Operação AND de 3 bits: f(x,y,z)=xyzf(x, y, z) = x \land y \land z
  • Somador de 8 bits: f(x1,...,x8,y1,...,y8)f(x_1, ..., x_8, y_1, ..., y_8)
    • É uma função de 16 elementos contendo 16 variáveis ​​booleanas
  • Somador de 32 bits: f(x1,...,x32,y1,...,y32)f(x*1, ..., x*{32}, y*1, ..., y*{32})
    • É uma função de 64 elementos contendo 64 variáveis ​​booleanas
    • Também pode ser considerada como uma função binária de inteiros de 32 bits: f(x,y)x,yInt32f(x, y) \quad x, y \in \text{Int32}

Resumo

Combinando funções simples de portas lógicas, novas funções lógicas podem ser construídas. Incluindo operações como adição, subtração, multiplicação e divisão de inteiros de 32 bits e operações de tipos de ponto flutuante de precisão simples de 32 bits, etc.

Linguagem de programação

Vamos olhar para as linguagens de programação novamente. Tome Python como exemplo, veja os elementos em Python.

Operador

NomeSímboloFunção
Operadores lógicose ou nãoFunções lógicas binárias e unárias
Operadores aritméticos+, -, *, /, %, **, //Funções Binárias
Operadores de comparação==, !=, >, <, >=, <=Funções binárias
...

Tomando o operador de adição de número de ponto flutuante (+) como exemplo, a imagem da função é a seguinte:

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

Funções

Você pode definir suas próprias funções em Python:

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

Uma nova função é definida aqui. Ele usa "+, -, *, max" e outras funções para construir a nova função. O método de construção também se dá por meio da composição de funções.

Resumo

As funções estão em toda parte nas linguagens de programação. Combinando funções básicas, novas funções podem ser construídas e novos algoritmos podem ser obtidos.

Rede neural

A rede neural também é função. Assim como os circuitos digitais e as linguagens de programação, também é composto por funções simples. As unidades básicas de circuitos digitais são funções lógicas como AND, OR e NOT. As unidades básicas nas linguagens de programação são funções como vários operadores, enquanto a unidade básica das redes neurais são os neurônios.

Neurônio

Então, o que é um neurônio? Um neurônio biológico é uma célula com dendritos de entrada e axônios de saída. E o neurônio na rede neural é um neurônio artificial, também é uma função, mais precisamente, é um tipo de função.


O número de entradas de neurônios pode ser alterado, o que significa que ele representa uma função de elemento nn f(x1,...,xn)f(x_1, ..., x_n), e nn pode ser diferente para diferentes neurônios.

Rede neural

Os neurônios se combinam para formar uma rede neural. Como mostrado abaixo:

A rede neural contém três neurônios (não conte neurônios de entrada):

  • 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)

A função representada pela rede neural é:

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))

Resumo

  1. O núcleo dos circuitos digitais (hardware) é a função, e suas funções básicas são as funções da porta lógica AND OR NOT;
  2. O núcleo das linguagens de programação (software) é a função, e suas funções básicas são várias funções de operador e funções internas (fornecidas por hardware ou compostas);
  3. O núcleo das redes neurais também é função, e suas funções básicas são os neurônios;
  4. Novas funções podem ser construídas através da composição de funções simples. Redes neurais são funções construídas a partir de funções de neurônios por meio de operações de composição de funções.

Pergunta

Qual é exatamente a função representada por um neurônio?

Apenas saber que é uma função de elemento nn não é suficiente. As unidades básicas AND, OR e NOT nos circuitos digitais listam a tabela-verdade e desenham a figura, mas e o neurônio?