Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Machine Learning com Javascript utilizando TensorFlow.js

Carla Vieira
September 21, 2019

Machine Learning com Javascript utilizando TensorFlow.js

TensorFlow.js é uma biblioteca em Javascript para treinar e fazer deploy de modelos de Machine Learning, ela facilita: desenvolver modelos em Javascript, rodar modelos já existentes e retreinar modelos já existentes. Nesta palestra, irei apresentar as possibilidades de desenvolvimento utilizando o Tensorflow.js e, como exemplo, uma demo que utiliza um modelo de aprendizado de máquina do TensorFlow.js para identificação automática de comentários tóxicos.

Carla Vieira

September 21, 2019
Tweet

More Decks by Carla Vieira

Other Decks in Technology

Transcript

  1. “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
  2. "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
  3. "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
  4. "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
  5. "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
  6. "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
  7. "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
  8. "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
  9. 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
  10. “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
  11. 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
  12. 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.
  13. 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.
  14. 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
  15. 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
  16. 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
  17. Exemplo Aprendizado Supervisionado Treinar um algoritmo para classificação ou regressão

    com dados rotulados. Classificação de comentários tóxicos online
  18. 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"
  19. 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
  20. 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, ...]
  21. Estrutura de uma rede neural Imagem de entrada Camada de

    entrada Camada escondida Camada de saída Saída
  22. 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 => {...}); });
  23. Toxicity Model const predict = async () => { model

    = await toxicity.load(); labels = model.model.outputNodes.map(d => d.split('/')[0]) const tableWrapper = document.querySelector('#table-wrapper'); tableWrapper.insertAdjacentHTML( 'beforeend', `<div class="row"> <div class="text">TEXT</div> ${labels.map(label => { return `<div class="label">${label.replace('_', ‘ ')}</div>`; }).join('')} </div>`);
  24. Toxicity Model const predictions = await classify(samples.map(d => d.text)); addPredictions(predictions);

    document.querySelector('#classify-new-text’) .addEventListener('click', (e) => { const text = document.querySelector('#classify-new-text- input').value; const predictions = classify([text]).then(d => { addPredictions(d); }); }); predict();
  25. 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
  26. Retreinar modelos existentes Transferência de Aprendizado Processo de aproveitar uma

    rede treinada para um dada tarefa em uma outra tarefa similar.
  27. 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
  28. Limitações Precisa de um conjunto de dados MUITO grande para

    treinar modelos Performance - pode levar muito tempo para treinar o modelo
  29. 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
  30. 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)
  31. 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
  32. 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
  33. “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
  34. 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
  35. Tensorflow use-cases Getting Alexa to Respond to Sign Language Using

    Your Webcam and TensorFlow.js Transfer Learning to play Pacman via the Webcam
  36. 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
  37. Ferramentas Magenta.js NeuroJS ConvNetJS WebDNN Ml.js AIJS Keras.js Tensorflow.js examples

    Tensorflow playground Jupyter Notebooks ML5.js Amazon ML Microsoft ML APIs Google Cloud AI ONNX.js Brain.js Synaptic.js Natural Neataptic Google Colab Teachable machine boilerplate PoseNet machine_learning