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 full-size slide

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

    View full-size 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 full-size slide

  4. Inteligência Artificial?

    View full-size slide

  5. Inteligência Artificial?

    View full-size slide

  6. “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 full-size slide

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

    View full-size slide

  8. "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 full-size slide

  9. "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 full-size slide

  10. "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 full-size slide

  11. "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 full-size slide

  12. "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 full-size slide

  13. "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 full-size slide

  14. "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 full-size slide

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

    View full-size slide

  16. 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 full-size slide

  17. “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 full-size slide

  18. Programação tradicional x Machine Learning

    View full-size slide

  19. 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 full-size slide

  20. 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 full-size slide

  21. 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 full-size slide

  22. 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 full-size slide

  23. 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 full-size slide

  24. 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 full-size slide

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

    View full-size slide

  26. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  29. Dados de treinamento

    View full-size slide

  30. Dados de teste/validação

    View full-size slide

  31. 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 full-size slide

  32. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  36. 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 full-size slide

  37. 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 full-size slide

  38. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  41. Interface Humano-Computador
    Webcam
    Mouse
    Acelerômetro

    View full-size slide

  42. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  46. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

  49. 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 full-size slide

  50. 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 full-size slide

  51. 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 full-size slide

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

    View full-size slide

  53. 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 full-size slide

  54. “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 full-size slide

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

    View full-size slide

  56. 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 full-size slide

  57. 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 full-size slide

  58. 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 full-size slide

  59. 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 full-size slide

  60. 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 full-size slide