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. MACHINE LEARNING
    COM TENSORFLOW.JS
    Carla Vieira | @carlaprvieira

    View Slide

  2. Desenvolvedora, palestrante, Evangelista de Inteligência
    Artificial e coordenadora do perifaCode
    Carla Vieira
    @carlaprvieira | [email protected]

    View Slide

  3. 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

    View Slide

  4. Inteligência Artificial?

    View Slide

  5. Inteligência Artificial?

    View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  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

    View Slide

  12. Por que aprender ML é “difícil”?

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  20. Machine Learning x
    Inteligência Artificial x
    Deep Learning

    View Slide

  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

    View Slide

  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

    View Slide

  23. Programação tradicional x Machine Learning

    View Slide

  24. View Slide

  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

    View Slide

  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.

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  31. Exemplo
    Aprendizado
    Supervisionado
    Treinar um algoritmo para
    classificação ou regressão com
    dados rotulados.
    Classificação de
    comentários tóxicos
    online

    View Slide

  32. View Slide

  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"

    View Slide

  34. toxic
    severe_toxic
    obscene
    threat
    insult
    identity_hate
    Comentários
    Qual o tipo de problema?

    View Slide

  35. Aprendizado Supervisionado
    Respostas
    Dados de
    treinamento
    Modelo pré-
    treino
    Dados
    Modelo pós-
    treino
    Respostas

    View Slide

  36. Dados de treinamento

    View Slide

  37. Dados de teste/validação

    View Slide

  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

    View Slide

  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, ...]

    View Slide

  40. Aprendizado Supervisionado
    Dados de teste
    Rede neural
    (CNN)
    toxic
    severe_toxic
    obscene
    threat
    insult
    identity_hate

    View Slide

  41. Estrutura de uma rede neural
    Imagem de
    entrada
    Camada de
    entrada
    Camada
    escondida
    Camada
    de saída
    Saída

    View Slide

  42. View Slide

  43. View Slide

  44. Comentários
    % de chance
    para cada
    classificação

    View Slide

  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 => {...});
    });

    View Slide

  46. View Slide

  47. View Slide

  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', `
    TEXT
    ${labels.map(label => {
    return `${label.replace('_', ‘
    ')}`;
    }).join('')}
    `);

    View Slide

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

    View Slide

  50. Tensorflow?
    Biblioteca open source de aprendizado
    de máquina criado pelo Google.

    View Slide

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

    View Slide

  52. View Slide

  53. Interface Humano-Computador
    Webcam
    Mouse
    Acelerômetro

    View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  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

    View Slide

  58. Retreinar modelos
    existentes
    Transferência de Aprendizado
    Processo de aproveitar uma rede treinada
    para um dada tarefa em uma outra
    tarefa similar.

    View Slide

  59. Desenvolver modelos
    Interface open-source amigável
    para utilizar o TensorFlow

    View Slide

  60. View Slide

  61. View Slide

  62. Ferramentas mais utilizadas de Data science (Fonte: O’Reily Data science Survey 2017)

    View Slide

  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

    View Slide

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

    View Slide

  65. Limitações
    Precisa de um conjunto de dados MUITO grande para treinar modelos
    Performance - pode levar muito tempo para treinar o modelo

    View Slide

  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

    View Slide

  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)

    View Slide

  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

    View Slide

  69. Algoritmos não têm viés.
    Nós quem temos.

    View Slide

  70. View Slide

  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

    View Slide

  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

    View Slide

  73. Carla Vieira
    @carlaprvieira
    [email protected]
    Obrigada!
    bit.ly/abcdev19-carla

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide