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

A Importância do Ócio (JS Version): Delegando tarefas para a máquina com Machine Learning

A Importância do Ócio (JS Version): Delegando tarefas para a máquina com Machine Learning

Sabe aquele momento em que você sabe que tem que fazer alguma tarefa, mas simplesmente não quer se dar ao trabalho? Ou aquelas que você até faria de bom grado, mas sabe que o seu desempenho seria absolutamente horrível? Não faça algo que uma máquina poderia estar fazendo por você! Hoje em dia com o aumento do poder computacional nos nossos computadores pessoais e APIs de servidores externos, existem várias tarefas que poderíamos estar ensinando ao computador como fazer pra que nunca tenhamos que fazer de novo. Nesta talk eu vou mostrar como eu uso Machine Learning para automatizar minhas atividades cotidianas, explicar os algoritmos utilizados e mostrar como você também pode utilizar isso para recuperar tempo precioso da sua vida que você poderia usar para salvar o mundo ou fazer absolutamente nada relevante.

91b0fc08849c4128f1eed542c057fd27?s=128

Isabella Silveira

July 14, 2018
Tweet

Transcript

  1. A Importância do Ócio Delegando tarefas para a máquina com

    Machine Learning @silveira_bells
  2. Ao longo dos anos, a tecnologia foi evoluindo para facilitar

    a sobrevivência da espécie humana
  3. None
  4. None
  5. None
  6. Quanto mais ela evoluía, mais fácil era a vida e

    assim as preocupações iam mudando
  7. None
  8. None
  9. None
  10. Então a tecnologia começou a criar novas formas de interação

    e se tornou um espelho da própria sociedade
  11. Século XXI: a tecnologia a serviço dos interesses da sociedade

  12. E qual é a coisa mais valiosa da atualidade?

  13. Poder?

  14. None
  15. None
  16. Fama?

  17. None
  18. Dinheiro?

  19. None
  20. Ganhar discussão no twitter?

  21. None
  22. Nope

  23. None
  24. Tempo

  25. Isa Silveira @silveira_bells Desenvolvedora @Work&Co Carioca, cover da Anitta*, mãe

    de cachorro, maths freak, senso de humor peculiar @vida
  26. None
  27. None
  28. Tempo

  29. Tempo é commodity mais importante da atualidade

  30. None
  31. None
  32. None
  33. None
  34. VC TC VTNC VDD SDDS TBH OMW IMO PQP SRSLY

    WTF BRB
  35. Estamos sempre procurando formas de ganhar tempo e otimizar processos

  36. None
  37. None
  38. None
  39. O que é ótimo, porque aí podemos usar nosso tempo

    no que realmente importa
  40. https://www.researchgate.net/publication/230786381_Inspired_by_Distraction_Mind_Wandering_Facilitates_Creative_Incubation

  41. Por que não usar a tecnologia pra automatizar processos pessoais

    então?
  42. Era uma vez, uma história que se repetia muitas vezes

  43. “Lembra de quando a gente foi pra ____ em ____?

    Você ainda tem as fotos aí?” - Silveira, Christine
  44. None
  45. None
  46. Como eu poderia usar a tecnologia pra otimizar esse processo?

  47. como ferramenta de otimização de tempo pessoal Machine learning

  48. O que é machine learning?

  49. O aprendizado automático ou aprendizado de máquina (em inglês: "machine

    learning") é um subcampo da o que evoluiu do estudo de reconhecimento de padrões e da teoria do aprendizado computacional em inteligência artificial . Em 1959, Arthur Samuel definiu aprendizado de máquina como o "campo de estudo que dá aos computadores a habilidade de aprender sem serem explicitamente programados". O aprendizado automático explora o estudo e construção de algoritmos que podem aprender de seus erros e fazer previsões sobre dados. Tais algoritmos operam construindo um modelo a partir de inputs amostrais a fim de fazer previsões ou decisões guiadas pelos dados ao invés de simplesmente seguindo inflexíveis e estáticas instruções programadas.
  50. Permite que a máquina aprenda

  51. Com machine learning, podemos aprender sobre dados de forma automatizada

  52. “Mas por que usar Machine Learning no browser?”

  53. Tem alguns jeitos em que poderíamos usar ML em uma

    aplicação web
  54. Hipótese #1: terceirizando o ML

  55. Deixar alguma API de ML cuidar do trabalho pesado

  56. Mas agora você tem que lidar com a carga intermediária

    de vários e vários GBs de fotos
  57. Passar toda a mídia pra um S3, pagar por toda

    a hospedagem da carga, mais APIs pra integrar Preocupações do dev
  58. Barreiras de usabilidade e preocupações com privacidade: “por que um

    serviço externo está manipulando as minhas fotos?” Preocupações do usuário
  59. E o S3 por si só não é suficiente, você

    ainda precisa implementar formas de selecionar, cortar e rotular fotos
  60. No final a eficácia não está boa o suficiente e

    não tem como alterar o algoritmo porque você não tem acesso a ele
  61. None
  62. Hipótese #2: ML server side

  63. Usar alguma biblioteca bem estabelecida em python, por exemplo

  64. Mas você não sabe exatamente qual vai ser o volume

    de usuários nem o trafego de dados
  65. Load balancing num EC2, guardar os modelos e dados de

    cada usuário, implementação de provisionamento pra inferência e transferência do aprendizado Preocupações do dev
  66. Fazer upload de todas as fotos e recebimento da resposta

    demora e consome muita banda. Processo muito custoso Preocupações do usuário
  67. None
  68. Hipótese #3: ML no browser

  69. Tensorflow.js fazendo todo o machine learning no client side mesmo

  70. Ótima abstração de algoritmos de ML, sem malabarismo de dados

    de um lado pro outro; tudo acontece no mesmo lugar
  71. Machine learning interativo Novas oportunidades

  72. Fim da necessidade de instalação de bibliotecas pelo usuário Novas

    oportunidades
  73. Aceleração usando GPU através do WebGL (até mobile!) Novas oportunidades

  74. Maior democratização de aprendizado e de acesso à aplicações com

    machine learning
  75. Performance do front Preocupações do dev

  76. Fazer upload das fotos usando cliente do browser Preocupações do

    usuário
  77. None
  78. Case do dia

  79. Reconhecimento facial com redes neurais convolucionais

  80. Reconhecimento facial 1.Encontrar os rostos 2.Projeção de feições 3.Diferenciação de

    rostos
  81. Reconhecimento facial 1.Encontrar os rostos 2.Projeção de feições 3.Diferenciação de

    rostos
  82. None
  83. Qual approach usar? Comparação de pixels?

  84. None
  85. None
  86. None
  87. None
  88. None
  89. None
  90. None
  91. Dividimos a imagem em quadrados de 16x16

  92. None
  93. None
  94. https://github.com/justadudewhohacks/face-api.js

  95. await faceapi.loadModels('/')

  96. None
  97. None
  98. None
  99. Reconhecimento facial 1.Encontrar os rostos 2.Projeção de feições 3.Diferenciação de

    rostos
  100. None
  101. None
  102. fullFaceDescription.forEach((fd, i) => { faceapi.drawLandmarks(canvas, fd.landmarks, { drawLines: true })

    })
  103. None
  104. None
  105. None
  106. None
  107. Reconhecimento facial 1.Encontrar os rostos 2.Projeção de feições 3.Diferenciação de

    rostos
  108. None
  109. Agora é tranquilo, só achar por comparação

  110. Facebook

  111. 2,19 bilhões de usuários

  112. 300 milhões uploads de fotos por dia

  113. None
  114. None
  115. E óbvio que como todo trabalho braçal, nós também vamos

    deixar essa parte pra máquina
  116. Treinamos uma rede neural convolucional pra fazer o trabalho pesado

  117. 128 medidas pra cada rosto

  118. embbeding

  119. None
  120. None
  121. Comparamos o embedding da face atual com os que já

    temos registrados e verificamos qual tem a menor distância euclidiana
  122. None
  123. Agora conseguimos fazer uma categorização de pessoas e agrupamento por

    data
  124. https://github.com/bella-silveira/face-recognition-demo

  125. Aprenda coisas fora da sua rotina de trabalho

  126. A tecnologia também é sua aliada fora das horas comerciais

  127. Use seu tempo com as coisas realmente importantes $❤

  128. Muito obrigada! ❤

  129. @silveira_bells