Blog oficial para desenvolvedores que falam português
Código aberto para Active Question Reformulation com Reinforcement Learning
10/23/18
Publicado por Michelle Chen Huebscher, engenheira de Software e Rodrigo Nogueira, estudante de PhD na New Your University e estagiário de engenharia de software, Google AI Language
O processamento de linguagem natural
é um foco importante
e contínuo
da pesquisa de IA do Google, com aplicação em
tradução de máquina
, análise
sintática
e
semântica,
e
muito mais
. É importante ressaltar que, como a tecnologia de conversação exige cada vez mais a capacidade de responder diretamente às perguntas dos usuários, uma das áreas mais ativas de pesquisa que buscamos é a de respostas automáticas (QA, na sigla em inglês), um
elemento básico
fundamental do diálogo humano.
Como o código de fonte aberta é um componente crítico de pesquisa reproduzível, estamos lançando um pacote
TensorFlow para as Respostas Automáticas Ativas
(ActiveQA), um projeto de pesquisa que investiga o uso do
aprendizado por reforço
para treinar agentes artificiais para responder a perguntas. Apresentado pela primeira vez em nosso artigo na
ICLR 2018
“
Faça as perguntas certas: a reformulação de pergunta ativa com o aprendizado por reforço
”, o ActiveQA interage com sistemas de QA usando linguagem natural com o objetivo de fornecer melhores respostas.
Resposta Automática Ativa
No QA tradicional,
técnicas de aprendizado supervisionadas
são usadas em combinação com dados classificados para treinar um sistema que responda a perguntas de entradas arbitrárias. Embora eficaz, essa abordagem sofre com a falta de capacidade de lidar com a incerteza da forma como os humanos fariam: reformulando perguntas, realizando várias pesquisas, avaliando e agregando respostas. Inspirado pela capacidade humana de "fazer a pergunta certa", o ActiveQA apresenta um agente que consulta repetidamente o sistema de QA. Desse modo, o agente pode reformular a pergunta original várias vezes para encontrar a melhor resposta possível. Chamamos essa abordagem de ativa porque o agente se envolve em uma interação dinâmica com o sistema de QA, com o objetivo de melhorar a qualidade das respostas retornadas.
Por exemplo, considere a pergunta “
Quando o Tesla nasceu?
”. O agente reformula a pergunta de duas maneiras diferentes: “
Quando é o aniversário do Tesla
” e “
Em que ano o Tesla nasceu
”, obtendo respostas para ambas as perguntas do sistema de QA. Usando todas essas informações, ele decide responder “
10 de julho de 1856
”.
O que caracteriza um sistema ActiveQA é que ele aprende a fazer perguntas que levam a boas respostas. No entanto, como os dados de treinamento na forma de pares de perguntas, com uma pergunta original e uma variante de maior sucesso, não estão prontamente disponíveis, o ActiveQA usa o
aprendizado por reforço
, uma abordagem ao aprendizado de máquina voltada para o treinamento de agentes, para que eles executem ações que maximizem uma recompensa, enquanto interagem com um ambiente.
O aprendizado ocorre quando o agente do ActiveQA interage com o sistema de QA; cada reformulação de pergunta é avaliada em termos de qualidade da resposta correspondente, que constitui a recompensa. Se a resposta for boa, o algoritmo de aprendizado ajustará os parâmetros do modelo para que a reformulação da pergunta que leva à resposta tenha mais probabilidade de ser gerada novamente, ou, caso contrário, menos probabilidade, se a resposta for ruim.
Em
nosso artigo
, mostramos que é possível treinar esses agentes para ter um melhor desempenho que o sistema de QA básico, o usado para fornecer respostas a reformulações, ao fazer perguntas melhores. Esse é um resultado importante, pois o sistema de QA já é treinado com aprendizado supervisionado para resolver a mesma tarefa. Outra constatação interessante de nossa pesquisa é que o agente do ActiveQA pode aprender uma estratégia de reformulação relativamente sofisticada e ainda assim interpretável (a
política
de aprendizado por reforço). A política aprendida usa técnicas de recuperação de informações bem conhecidas, como a
reponderação do termo de consulta tf-idf
, o processo pelo qual termos mais informativos são mais ponderados do que os genéricos, e a
stemização de palavra
.
Crie seu próprio sistema ActiveQA
O pacote TensorFlow ActiveQA que estamos lançando consiste em três componentes principais e contém todo o código necessário para treinar e executar o agente ActiveQA.
Um modelo pré-treinado de
sequência para sequência
que reconhece uma pergunta de entrada e retorna suas reformulações. Essa tarefa é semelhante à tradução automática, traduzindo do inglês para o inglês, e o modelo inicial pode de fato ser usado no processo de paráfrase geral. Para a implementação, utilizamos e personalizamos o
Código do tutorial de tradução de máquina neural do TensorFlow
. Adaptamos o código para ser compatível com o treinamento com aprendizado por reforço, usando métodos de gradiente de política.
*
Um modelo de
seleção de resposta
. O seletor de respostas usa uma
rede neural convolucional
e atribui uma pontuação a cada trio da pergunta original, reformulação e resposta. O seletor usa incorporações de palavras pré-treinadas e publicamente disponíveis (
GloVe
).
Um sistema de
respostas automáticas
(o
ambiente
). Para isso, utilizamos o
BiDAF
, um sistema popular de respostas automáticas, descrito em
Seo et al. (2017)
.
Também fornecemos ponteiros para pontos de verificação em todos os modelos treinados.
A missão do Google é organizar as informações do mundo e torná-las universalmente acessíveis e úteis, e acreditamos que o ActiveQA é um passo importante para realizar essa missão. Consideramos que esta pesquisa nos ajudará a projetar sistemas que forneçam respostas melhores e mais interpretáveis, e esperamos que ela ajude outras pessoas a desenvolver sistemas que possam interagir com o mundo usando linguagem natural.
Agradecimentos
Contribuíram para essa pesquisa e lançamento Alham Fikri Aji, Christian Buck, Jannis Bulian, Massimiliano Ciaramita, Wojciech Gajewski, Andrea Gesmundo, Alexey Gronskiy, Neil Houlsby, Yannic Kilcher e Wei Wang.
*
O sistema relatado em nosso artigo usava o
código de sequência para sequência do TensorFlow
usado em
Britz et al. (2017)
. Posteriormente, uma
versão de código aberto
do
modelo de tradução do Google (GNMT)
foi
publicado
como um tutorial. A versão do ActiveQA lançada hoje é baseada nessa implementação mais recente e ativamente desenvolvida. Por esse motivo, o sistema lançado pode variar um pouco do artigo. Mesmo assim, o desempenho e o comportamento são comparáveis qualitativa e quantitativamente.
↩
Labels
+page
1
20th Century Fox
1
A/B
1
Action
1
Action Console
1
Actions
3
Actions Console
1
Actions on Google
1
ActiveQA
1
Adaptive Battery
1
AddThis
1
ADK
1
ADL
1
Admin do Firebase
1
AdMob
6
Ads
2
AdWords
1
AdX
1
AI
4
algoritmo
1
AMP
6
AMP Linker
1
AMP Project
1
Analytics API
1
Android
58
Android 8.0 Oreo
1
Android 8.1
1
Android ADK
2
Android API
2
Android App Bundle
1
Android Dev Summit
1
Android Developers
23
Android Marshmallow
1
Android N
3
Android Nougat
2
Android P
3
Android P Beta 2
1
Android Preview
1
Android SDK
1
android studio
8
Android Studio 3.2
1
android wear
2
AndroidDev
6
AndroidX
1
Announcement
2
AoG
1
AoGDevs
1
api
15
API 25
1
API 28
1
APIs
4
Aplicativos
4
app
1
App Engine
1
Apple
1
apply
1
Apps
9
AR
1
ARCore
3
artificial intelligence
1
AsyncTask
1
AUC
1
AutoAugment
1
Avro
1
Awareness API
1
Biblioteca do Google
1
Big Data
1
BigQuery
1
BiometricPrompt
1
bitcode
1
Borg
1
Bot
1
bytecode Dalvik
1
C++
1
câmera
1
CameraDevice
1
Canal Beta
1
canary
1
câncer de próstata
1
Capital One
1
Cast
1
CFI
1
Chrome
8
Chrome 68
1
Chrome Dev Summit
1
Chrome DevTools
1
Chrome OS
2
Chromecast
1
Chromium
2
CI
1
CLI
1
Cloud
6
Cloud Computing
1
Cloud Console
1
Cloud Dataflow
1
Cloud Developers
2
Cloud DLP
1
Cloud Firestore
1
Cloud Messaging
1
Cloud ML Engine
1
Cloud Scheduler
1
Cloud Shell
1
Cloud Source Repositories
1
Cloud Spanner
2
CodeSchool
1
código aberto
2
Compute Engine
1
ConfigMap
1
Container Builder
1
CPU
2
Crash Reporting
2
Crashlytics
3
credential api
1
criptografia
1
CSS
3
CSS Grid Layout
1
CSV
1
CTA
1
Curitiba
1
Dart API
1
Data Validation
1
DBAs
1
DCGAN
1
Desenvolvedores Google
11
Desenvolvimento
3
DevBusBrasil
1
DevBytes
2
Developer Bus
1
Developer Preview
1
developer quiz
1
DevFest
3
DevFest16
1
DevFest18
1
DevFestW
1
DFP
2
Dialogflow
1
DLP
1
DLS
1
documentação
1
Dragon Ball Legends
1
E2E
1
eclipse
1
end-to-end-encryption
1
Estimator
1
Estimators API
1
estudantes
1
Eventos
15
Famílias multilíngue
1
FCM
2
Featured
1
Firebase
24
Firebase Analytics
6
Firebase App Indexing
2
Firebase Cloud Messaging
5
Firebase Crashlytics
2
Firebase Dynamic Links
3
Firebase In-App Messaging
1
Firebase Invites
2
Firebase Lab
1
Firebase Links Dinamicos
1
Firebase Notifications
3
Firebase Remote Config
1
Flutter
3
FRR
1
G+
1
game
1
game dev
3
Games
2
games services
1
GCloud
3
GCM
1
GCP
7
GDD
7
GDE
1
GDEs
1
GDG
12
GDG Curitiba
1
GDG Floripa
1
GDG OpenSampa
1
GDG Porto Alegre
1
GDG Recife
1
GDG SP
3
GDGs
1
GDL
1
Git
1
GitHub
1
GNMT
1
Google
3
Google Ad Manager
1
Google AI
1
Google Analytics
1
Google Assistant
1
Google Assistente
3
Google Brain
2
Google Cast SDK
1
google clou
1
Google Cloud
17
Google Cloud Certified
1
Google Cloud Healthcare API
1
Google Cloud Platform
3
google code-in
1
Google Developer Advocate
1
Google Developer Expert
1
Google Developers
11
Google Fotos
1
Google I/O
6
Google Play
16
Google Play Games services
1
Google Play Protect
1
Google Play Services
4
Google Slides
1
Google Speech
1
google summer of code
1
Google+
2
Google+ sign-in
1
Googlers
1
GPU
2
GSuites
1
GUI
1
Hackathon
1
Hangouts
1
Hangouts Chat
1
HDR
1
High Quality Apps
2
HTML5
6
HTTP
3
HTTPS
2
HttpURLConnection
2
I/O
1
IA
2
Illusive Images
1
ImageReader
1
In-App Messaging
1
Inglês
1
Instant Apps
1
inteligencia artificial
1
IntelliJ REPL
1
IntentService
1
Interoperabilidade
1
IO Extended
1
IO13
1
iOS
9
IU
2
Java
1
Java 8
1
javascript
2
JPEG
1
JSON
2
Kaggle
1
kernel
1
Keyboard Map API
1
Knowledge Connectors
1
Kotlin
6
Kotlin da Udacity
1
Kubernetes
5
LangID
1
Launchpad
1
launchpad accelerator
2
Learning Augmentation
1
LEGO
1
Listas
1
ListFragment
1
LLVM
1
LTO
1
Machine Learning
2
Meetup
2
mensagens
1
Mentoria
1
Messaging
2
microsserviços
1
ML
2
ML Kit
1
Mobile
3
Mobile Ads SDK
1
Monetização
3
Monetize
3
MySQL
1
Native
1
Navigation Architecture Component
1
NES
1
Neto Marin
2
Next Level Apps
2
Next Level Tips
2
NNLM
1
Node.js
2
Notificações
1
novembro azul
1
Number Genie
1
Nuvem Profissional
1
OAuth
2
OAuth2
1
Open Images Extended
1
open source
3
Options Menu
1
Options Menu virtual
1
Orkut
2
Payment Request
1
pesquisa
1
PHA
1
Phone Gateway
1
PII
1
pixel
1
Play Academy
1
Play Console
1
Play Services
1
Playtime 2018
1
plug-in AMP
1
Porto Alegre
1
Preact
1
PRIV
1
program
1
progressive web apps
2
Push Notification
2
Python
1
QA
1
RA
2
Raspberry Pi
1
RBDMS
1
React
1
recording apis
1
remarketing
1
Remote Config
2
research
4
ResultReceiver
1
reward
1
RNN
2
Robolectric 4.0
1
RV
1
Sceneform
1
SDK
4
SDK Manager
3
Security
2
Server
1
service worker
1
sign-in
1
Sliding Tabs
1
Smartronix
1
social
6
Spark
1
SRE
1
Stack
1
Stack Overflow
1
Startups
2
Storage
2
story
1
Support Library
1
SurfaceView
1
Svelte
1
switch
1
Tag Manager
1
Tag Manager 360
1
tensorflow
5
TensorFlow Hub
2
TensorFlow Lite
1
TensorFlow Transform
1
Test Lab
2
Testes
1
TF Hub
2
tf.keras
1
TFDV
1
TFX
1
TI essencial
1
toolkit
1
tradução
1
TTS
1
Udacity
1
Universal Apps
1
Universal Sentence Encoder
1
user experience
1
ux
1
VectorDrawable
1
Velostrata
1
Volley
1
vr
2
vulnerabilidades
1
vulnerabilidades do Google
1
vulnerability
1
web
2
web dev
2
WebKit
1
webservice
3
when
1
WordPress
1
WorkerDOM
1
YouTube
4
YouTube API
1
YUV
1
Zomato
1
Archive
2022
Nov
Oct
Jul
Jun
May
Apr
Mar
Feb
Jan
2021
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2020
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
Jan
2019
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
2018
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Apr
Mar
Feb
2017
Aug
Jul
Jun
May
Apr
Mar
Jan
2016
Dec
Nov
Oct
Sep
Aug
Jul
May
Mar
2014
Jul
Jun
Apr
Mar
Feb
2013
Dec
Nov
Oct
Sep
Aug
Jul
Jun
May
Mar
Feb
Jan
2012
Nov
Jul
Jun
May
Apr
Mar
2011
Nov
Sep
Aug
Jul
Jun
Feed
Follow @googledevbr