MACHINE LEARNING
COM TENSORFLOW.JS
Carla Vieira | @carlaprvieira
Slide 2
Slide 2 text
Desenvolvedora, palestrante, Evangelista de Inteligência
Artificial e coordenadora do perifaCode
Carla Vieira
@carlaprvieira | [email protected]
Slide 3
Slide 3 text
Desenvolvedora, palestrante, Evangelista de Inteligência
Artificial e coordenadora do perifaCode
Carla Vieira
@carlaprvieira | [email protected]
Não sou uma gênia de Machine Learning
Slide 4
Slide 4 text
Inteligência Artificial?
Slide 5
Slide 5 text
Inteligência Artificial?
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
“O sucesso na criação da IA será o maior
acontecimento na história da humanidade.
Infelizmente, também poderá ser o último, a
menos que aprendamos como evitar os riscos.”
- Stephen Hawking
Slide 12
Slide 12 text
Por que aprender ML é “difícil”?
Slide 13
Slide 13 text
"não sei por onde começar"
"acho que eu deveria aprender Python"
"dificuldade com matemática"
"pessoas/professores fazem parecer mais difícil do que é"
"falta de cursos que juntem teoria e prática"
Por que aprender ML é “difícil”?
https://twitter.com/carlaprvieira/status/1174153077466832897
Slide 14
Slide 14 text
"não sei por onde começar“ “bora lá que vou tentar te ajudar”
"acho que eu deveria aprender Python“
"dificuldade com matemática“
"pessoas/professores fazem parecer mais difícil do que é“
"falta de cursos que juntem teoria e prática”
Por que aprender ML é “difícil”?
https://twitter.com/carlaprvieira/status/1174153077466832897
Slide 15
Slide 15 text
"não sei por onde começar“ “bora lá que vou tentar te ajudar”
"acho que eu deveria aprender Python“ “hoje vamos descobrir que não”
"dificuldade com matemática“
"pessoas/professores fazem parecer mais difícil do que é“
"falta de cursos que juntem teoria e prática“
Por que aprender ML é “difícil”?
https://twitter.com/carlaprvieira/status/1174153077466832897
Slide 16
Slide 16 text
"não sei por onde começar“ “bora lá que vou tentar te ajudar”
"acho que eu deveria aprender Python“ “hoje vamos descobrir que não”
"dificuldade com matemática“ “será que você precisa ser expert nisso?”
"pessoas/professores fazem parecer mais difícil do que é“
"falta de cursos que juntem teoria e prática“
Por que aprender ML é “difícil”?
https://twitter.com/carlaprvieira/status/1174153077466832897
Slide 17
Slide 17 text
"não sei por onde começar“ “bora lá que vou tentar te ajudar”
"acho que eu deveria aprender Python“ “hoje vamos descobrir que não”
"dificuldade com matemática“ “será que você precisa ser expert nisso?”
"pessoas/professores fazem parecer mais difícil do que é“
"falta de cursos que juntem teoria e prática“
Por que aprender ML é “difícil”?
https://twitter.com/carlaprvieira/status/1174153077466832897
Slide 18
Slide 18 text
"não sei por onde começar“ “bora lá que vou tentar te ajudar”
"acho que eu deveria aprender Python“ “hoje vamos descobrir que não”
"dificuldade com matemática“ “será que você precisa ser expert nisso?”
"pessoas/professores fazem parecer mais difícil do que é“ “concordo”
"falta de cursos que juntem teoria e prática“
Por que aprender ML é “difícil”?
https://twitter.com/carlaprvieira/status/1174153077466832897
Slide 19
Slide 19 text
"não sei por onde começar“ “bora lá que vou tentar te ajudar”
"acho que eu deveria aprender Python“ “hoje vamos descobrir que não”
"dificuldade com matemática“ “será que você precisa ser expert nisso?”
"pessoas/professores fazem parecer mais difícil do que é“ “concordo”
"falta de cursos que juntem teoria e prática“ “talvez seja difícil de encontrar”
Por que aprender ML é “difícil”?
https://twitter.com/carlaprvieira/status/1174153077466832897
Slide 20
Slide 20 text
Machine Learning x
Inteligência Artificial x
Deep Learning
Slide 21
Slide 21 text
Conceituação
INTELIGÊNCIA
ARTIFICIAL MACHINE
LEARNING DEEP
LEARNING
Programas com
habilidade de agir como
humanos
Algoritmos com habilidade
de aprender sem
programação expressa
Redes neurais artificiais que
aprendem através de um
grande volume de dados
1950 1980 2010
Slide 22
Slide 22 text
“Um programa de computador aprende se ele é
capaz de melhorar seu desempenho em
determinada tarefa, sob alguma medida de
avaliação, a partir de experiências passadas.”
- Tom Mitchell
Slide 23
Slide 23 text
Programação tradicional x Machine Learning
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
Programação tradicional x Machine Learning
if(email.includes('viagra')){
filterAsSpam(email);
} else if(email.includes('v!agra')){
filterAsSpam(email);
} else if(...){
....
}
import * as spamModel from "model.json"
const model = load(spamModel);
const newEmail = getEmail();
const prediction =
model.predict(newEmail);
prediction === 0 ? spam : not spam
Exemplo: Reconhecimento de Spam
Slide 26
Slide 26 text
Tipos de Machine Learning
Aprendizado
Supervisionado
Aprendizado não
Supervisionado
Aprendizado por
Reforço
Treinar um algoritmo para
classificação ou regressão com
dados rotulados.
Treinar um algoritmo para
agrupar ou associar um conjunto
não rotulado de dados.
Treinar um agente para tomar
certas ações dentro de um
ambiente.
Slide 27
Slide 27 text
Tipos de Machine Learning
Aprendizado
Supervisionado
Aprendizado não
Supervisionado
Aprendizado por
Reforço
Treinar um algoritmo para
classificação ou regressão com
dados rotulados.
Treinar um algoritmo para
agrupar ou associar um conjunto
não rotulado de dados.
Treinar um agente para tomar
certas ações dentro de um
ambiente.
Slide 28
Slide 28 text
Tipos de Machine Learning
Aprendizado
Supervisionado
Aprendizado não
Supervisionado
Aprendizado por
Reforço
Treinar um algoritmo para
classificação ou regressão com
dados rotulados.
Treinar um algoritmo para
agrupar ou associar um conjunto
não rotulado de dados.
Treinar um agente para tomar
certas ações dentro de um
ambiente.
Classificação Regressão
Slide 29
Slide 29 text
Tipos de Machine Learning
Aprendizado não
Supervisionado
Aprendizado por
Reforço
Treinar um algoritmo para
agrupar ou associar um conjunto
não rotulado de dados.
Treinar um agente para tomar
certas ações dentro de um
ambiente.
Agrupamento Associação
Slide 30
Slide 30 text
Tipos de Machine Learning
Aprendizado por
Reforço
Treinar um agente para tomar
certas ações dentro de um
ambiente.
Ambiente
Ação
Recompensa
Agente
Slide 31
Slide 31 text
Exemplo
Aprendizado
Supervisionado
Treinar um algoritmo para
classificação ou regressão com
dados rotulados.
Classificação de
comentários tóxicos
online
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
Qual o tipo de problema?
Classificação
"Splits objects based at one of the
attributes known beforehand. Separate
socks by based on color, documents
based on language, music by genre"
Slide 34
Slide 34 text
toxic
severe_toxic
obscene
threat
insult
identity_hate
Comentários
Qual o tipo de problema?
Slide 35
Slide 35 text
Aprendizado Supervisionado
Respostas
Dados de
treinamento
Modelo pré-
treino
Dados
Modelo pós-
treino
Respostas
Slide 36
Slide 36 text
Dados de treinamento
Slide 37
Slide 37 text
Dados de teste/validação
Slide 38
Slide 38 text
Nó: computações são
chamados de operadores.
Arestas: ligam
um operador a outro e são
chamadas de tensores
Tudo são grafos...
OPERATOR
OPERATOR
OPERATOR
OPERATOR
Arestas
Nós
Slide 39
Slide 39 text
Universal Sentence Encoder
Embed
“How old are you?”
“What is your age?”
“My phone is good.”
[0.3, 0.2, ...]
[0.2, 0.1, ...]
[0.9, 0.6, ...]
Slide 40
Slide 40 text
Aprendizado Supervisionado
Dados de teste
Rede neural
(CNN)
toxic
severe_toxic
obscene
threat
insult
identity_hate
Slide 41
Slide 41 text
Estrutura de uma rede neural
Imagem de
entrada
Camada de
entrada
Camada
escondida
Camada
de saída
Saída
Slide 42
Slide 42 text
No content
Slide 43
Slide 43 text
No content
Slide 44
Slide 44 text
Comentários
% de chance
para cada
classificação
Slide 45
Slide 45 text
Toxicity Model
import * as toxicity from '@tensorflow-models/toxicity’;
// The minimum prediction confidence.
const threshold = 0.9;
// Which toxicity labels to return.
const labelsToInclude = [‘identity_attack’, ‘insult’, ‘threat’];
toxicity.load(threshold, labelsToInclude).then(model => {
// Now you can use the `model` object to label sentences.
model.classify([‘you suck’]).then(predictions => {...});
});
O que podemos fazer com Tensorflow.js?
Rodar modelos existentes
Usar modelos já construídos em
Javascript ou converter modelos
em Python para rodar no
navegador
Retreinar modelos existentes
Retreinar modelos existentes
com seus próprios dados
Desenvolver ML com Javascript
Construir e treinar modelos em
Javascript utilizando APIs
Slide 58
Slide 58 text
Retreinar modelos
existentes
Transferência de Aprendizado
Processo de aproveitar uma rede treinada
para um dada tarefa em uma outra
tarefa similar.
Slide 59
Slide 59 text
Desenvolver modelos
Interface open-source amigável
para utilizar o TensorFlow
Slide 60
Slide 60 text
No content
Slide 61
Slide 61 text
No content
Slide 62
Slide 62 text
Ferramentas mais utilizadas de Data science (Fonte: O’Reily Data science Survey 2017)
Slide 63
Slide 63 text
Benefícios
Abstração dos algoritmos de ML e DL
Concentração na lógica da aplicação
Código aberto
Executar modelos no browser
Slide 64
Slide 64 text
Limitações
Precisa de um conjunto de dados MUITO grande para treinar modelos
Slide 65
Slide 65 text
Limitações
Precisa de um conjunto de dados MUITO grande para treinar modelos
Performance - pode levar muito tempo para treinar o modelo
Slide 66
Slide 66 text
Limitações
Precisa de um conjunto de dados MUITO grande para treinar modelos
Performance - pode levar muito tempo para treinar o modelo
A experiência mobile pode ser ruim
Slide 67
Slide 67 text
Limitações
Precisa de um conjunto de dados MUITO grande para treinar modelos
Performance - pode levar muito tempo para treinar o modelo
A experiência mobile pode ser ruim
Explicabilidade (modelos caixa preta)
Slide 68
Slide 68 text
Limitações
Precisa de um conjunto de dados MUITO grande para treinar modelos
Performance - pode levar muito tempo para treinar o modelo
A experiência mobile pode ser ruim
Explicabilidade (modelos caixa preta)
Viés / ética
Slide 69
Slide 69 text
Algoritmos não têm viés.
Nós quem temos.
Slide 70
Slide 70 text
No content
Slide 71
Slide 71 text
Google - Detecção de discurso de ódio (2019)
• 46% de falsos positivos para afro-americanos
• 1.5 mais chances das postagens serem rotuladas
como ofensivas
https://homes.cs.washington.edu/~msap/pdfs/sap2019risk.pdf
Slide 72
Slide 72 text
“Qualquer tecnologia que criamos reflete tanto
nossas aspirações quanto nossas limitações. Se
formos limitados na hora de pensar em inclusão, isso
vai ser refletido e incorporado na tecnologia que
criamos”.
- Joy Buolamwini
Toxicity model
Kaggle Challenge Toxicity
Text classification using TensorFlow.js: An example
of detecting offensive language in browser
ML4W: Toxicity Detector by Tensorflow
Toxic Comment Classification Models Comparison
and Selection
Top 1% Solution to Toxic Comment Classification
Challenge
Slide 75
Slide 75 text
Tensorflow use-cases
Getting Alexa to Respond to Sign Language Using
Your Webcam and TensorFlow.js
Transfer Learning to play Pacman via the Webcam
Slide 76
Slide 76 text
Articles
Machine Learning For Front-End Developers With
Tensorflow.js
https://www.freecodecamp.org/news/a-history-of-machine-
translation-from-the-cold-war-to-deep-learning-
f1d335ce8b5/
https://vas3k.com/blog/machine_learning/
https://sebastianraschka.com/blog/2015/why-python.html
https://towardsdatascience.com/do-you-know-how-to-
choose-the-right-machine-learning-algorithm-among-7-
different-types-295d0b0c7f60