Notação para Deep Learning
2021-10-15 | aprates.dev[1] Read this post in english
Um computador mereceria ser chamado de inteligente se pudesse enganar um humano fazendo-o acreditar que era humano. - Alan Turing
Matemática profunda, ufff…
Em meados de 2021 comecei a mergulhar em um curso de aprendizado de máquina (machine learning) que pensei que deveria fazer. A um bom tempo atrás, quando concluí minha graduação, meu trabalho de conclusão de curso foi sobre chatbots com emoções e como os humanos reagiriam a isso. Eu queria entender melhor como as técnicas haviam evoluído desde então, em 2006, e encontrei algo um pouco diferente do que eu esperava.Para o status quo atual, você simplesmente não pode evitar algum conhecimento básico de bibliotecas Python (como numpy), álgebra linear e uma boa dose de compreensão de notação matemática ao ler descrições de métodos de aprendizado de máquina. E às vezes pode ser muito frustrante.
Um pouco de notação em uma equação que você não entende completamente pode impedi-lo de implementar o conceito que está tentando aprender. Chegando como um desenvolvedor experiente, tive aquela sensação de iniciante, enquanto enfrentava os conceitos básicos do aprendizado de máquina moderno.
Então, aqui eu coletei algumas notações matemáticas que encontrei durante o curso de deep learning, e também algumas notas sobre conceitos que pareciam misteriosos para mim, como custo e derivados.
Fiz estas anotações principalmente para meu uso pessoal, mas postei pois gostaria de ter encontrado algo semelhante ao pesquisar na Internet. Também devo dizer que a notação varia muito de autor para autor, e também, que estou aprendendo, então tome minhas notas com um pé atrás.
Princípio
A ativação de um nó em uma rede neural é algo na forma:resultado = função_de_ativação(produto_escalar(pesos, entradas) + viés)
Notação Geral
de acordo com Andrew Ng da especialização deeplearning.ai no Coursera [2]- x : entrada
- y : resultado
- m : quantidade de dados
- X : conjunto de exemplos de treinamento
- Y : conjunto de exemplos de resultado
- N : tamanho de X
- ( x(i) , y(i) ) : i-ésimo par de exemplo em X
- ( x' , y' ) : um par de teste
- yˆ : resultado previsto
- L : função de perda (também pode se referir a camadas ocultas, veja hiperparâmetros)
- J : função de custo
- W : conjunto de parâmetros w (pesos)
- B : conjunto de parâmetros b (vieses)
- w[1], w[2], b[1], b[2],… : parâmetros por camada
- Z = transpose(W) * X + B : implementação vetorizada de camadas ocultas e de resultado
- dw1, dw2, db : derivados dos parâmetros
Hiperparâmetros
Esses parâmetros controlam de fato como os parâmetros w e b funcionam:- α : taxa de aprendizagem (símbolo alpha)
- número de iterações para a descida do gradiente
- L : número de camadas ocultas
- n[1], n[2],… : número de unidades ocultas por camada
- escolha da função de ativação, como relu, tanh, sigmoid…
Conceitos
Custo
A função de perda é determinada como a diferença entre o resultado real e o resultado previsto do modelo, como y V.S. y^.Embora às vezes a perda também seja referida como custo, não é a mesma coisa. A função de custo é a média da perda sobre o conjunto completo dos dados de treinamento Y.
Derivados (dx)
Recolhido de uma nota que achei útil no fórum postado por BurntCalcium (nick), outro aluno:Basicamente, se f é uma função de x, você está tomando uma proporção da *mudança em f* para a *mudança em x*, dado que a última é uma quantidade infinitesimalmente pequena. O 'd' que é usado ao escrever a notação representa a letra grega Δ (Delta), que é comumente usada para mostrar a mudança em uma quantidade em física e matemática. Então, basicamente dx significaria a mudança em x, df(x) significaria a mudança em f(x) e df(x)/dx como um todo é chamado de derivada de f(x) em relação a x. E, claro, no curso os instrutores adotaram a notação de que dx representa df(x)/dx, entretanto, fora do contexto deste curso, dx significaria simplesmente mudança em x.
Referência
[2] Deep Learning no CourseraVeja também
[3] Arquivos da Cápsula[4] Home da Cápsula
Quer mais?
Comente sobre um dos meus posts, fale comigo, diga:hello@aprates.dev
[5] Assine o feed da Cápsula
[6] Confira o projeto FatScript no GitLab
[7] Confira meus projetos no GitHub
[8] Confira meus projetos no SourceHut
Junte-se ao Geminispace
Gemini é um novo protocolo de Internet introduzido em 2019, como uma alternativa ao http(s) ou gopher, para conteúdos em texto leve e melhor privacidade.Não sabe como, mas quer fazer parte do clube? Veja:
[9] Guia de início rápido Gemini
Já tem um cliente Gemini?
[10] Navegue nesta cápsula via Gemini
© aprates.dev, 2021-2024 - o conteúdo deste site está licenciado sob
[11] Licença Creative Commons BY-NC-SA 4.0
[12] Construído orgulhosamente com GemPress
[13] Política de Privacidade