Pro Yearly is on sale from $80 to $50! »

Machine Learning com Javascript utilizando TensorFlow.js

B6e0ee98a08a3863043dc3edc5789029?s=47 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.

B6e0ee98a08a3863043dc3edc5789029?s=128

Carla Vieira

September 21, 2019
Tweet

Transcript

  1. MACHINE LEARNING COM TENSORFLOW.JS Carla Vieira | @carlaprvieira

  2. Desenvolvedora, palestrante, Evangelista de Inteligência Artificial e coordenadora do perifaCode

    Carla Vieira @carlaprvieira | carlaprv@hotmail.com
  3. Desenvolvedora, palestrante, Evangelista de Inteligência Artificial e coordenadora do perifaCode

    Carla Vieira @carlaprvieira | carlaprv@hotmail.com Não sou uma gênia de Machine Learning
  4. Inteligência Artificial?

  5. Inteligência Artificial?

  6. None
  7. None
  8. None
  9. None
  10. None
  11. “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
  12. Por que aprender ML é “difícil”?

  13. "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
  14. "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
  15. "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
  16. "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
  17. "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
  18. "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
  19. "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
  20. Machine Learning x Inteligência Artificial x Deep Learning

  21. 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
  22. “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
  23. Programação tradicional x Machine Learning

  24. None
  25. 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
  26. 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.
  27. 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.
  28. 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
  29. 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
  30. 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
  31. Exemplo Aprendizado Supervisionado Treinar um algoritmo para classificação ou regressão

    com dados rotulados. Classificação de comentários tóxicos online
  32. None
  33. 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"
  34. toxic severe_toxic obscene threat insult identity_hate Comentários Qual o tipo

    de problema?
  35. Aprendizado Supervisionado Respostas Dados de treinamento Modelo pré- treino Dados

    Modelo pós- treino Respostas
  36. Dados de treinamento

  37. Dados de teste/validação

  38. 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
  39. 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, ...]
  40. Aprendizado Supervisionado Dados de teste Rede neural (CNN) toxic severe_toxic

    obscene threat insult identity_hate
  41. Estrutura de uma rede neural Imagem de entrada Camada de

    entrada Camada escondida Camada de saída Saída
  42. None
  43. None
  44. Comentários % de chance para cada classificação

  45. 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 => {...}); });
  46. None
  47. None
  48. 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>`);
  49. 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();
  50. Tensorflow? Biblioteca open source de aprendizado de máquina criado pelo

    Google.
  51. Tensorflow.js? Biblioteca open source de aprendizado de máquina em Javascript.

  52. None
  53. Interface Humano-Computador Webcam Mouse Acelerômetro

  54. None
  55. None
  56. None
  57. 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
  58. Retreinar modelos existentes Transferência de Aprendizado Processo de aproveitar uma

    rede treinada para um dada tarefa em uma outra tarefa similar.
  59. Desenvolver modelos Interface open-source amigável para utilizar o TensorFlow

  60. None
  61. None
  62. Ferramentas mais utilizadas de Data science (Fonte: O’Reily Data science

    Survey 2017)
  63. 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
  64. Limitações Precisa de um conjunto de dados MUITO grande para

    treinar modelos
  65. Limitações Precisa de um conjunto de dados MUITO grande para

    treinar modelos Performance - pode levar muito tempo para treinar o modelo
  66. 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
  67. 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)
  68. 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
  69. Algoritmos não têm viés. Nós quem temos.

  70. None
  71. 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
  72. “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
  73. Carla Vieira @carlaprvieira carlaprv@hotmail.com Obrigada! bit.ly/abcdev19-carla

  74. 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
  75. Tensorflow use-cases Getting Alexa to Respond to Sign Language Using

    Your Webcam and TensorFlow.js Transfer Learning to play Pacman via the Webcam
  76. 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
  77. Referências Machine Learning • https://stanford.edu/~shervine/l/pt/teaching/cs-229/dicas-truques-aprendizado-maquina • https://stanford.edu/~shervine/l/pt/teaching/cs-229/dicas-aprendizado-supervisionado • https://stanford.edu/~shervine/l/pt/teaching/cs-229/dicas-aprendizado-nao-supervisionado •

    https://hackernoon.com/best-machine-learning-libraries-for-java-development-4eccb88e1348 • https://medium.com/nexo-ai/machine-learning-x-deep-learning-qual-a-diferen%C3%A7a-entre-eles- 665c0739f78a
  78. 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