- Our next speaker is Percy Liang.
Percy is assistant professor of computer science
and by courtesy of statistics.
Percy.
- Thank you.
- Hi; thanks everyone for coming.
I'm gonna share with you a new perspective
on connecting machine learning
and natural language processing.
It's well known that the field
of natural language processing
has made enormous progress in recent years.
We now have systems that can recognize speech
and power digital assistants,
systems that can translate between hundreds of languages,
and systems that can answer questions from text,
which is something that our research group
has been interested in lately.
Driving all of these successes
in natural language processing is machine learning
and the advances in there.
But I'd like to turn things around a little bit
for the purposes of this talk
and think about not learning for language,
but learning from language.
To set the stage for this perspective,
I want us to think about language
not passive text waiting to be analyzed,
but rather an active communication systems
that humans invented tens of thousands of years ago
to help us survive.
Here's how machine learning works in a nutshell.
You show a machine learning algorithm,
a lot of examples.
In this particular case, we have colored bars.
Each colored bar is either a one or a zero.
Now I ask you the question, can you figure out
what is the thing that distinguishes
the ones from the zeros?
Maybe that's not such a easy task.
While machine learning algorithms
can process this data much more effectively,
it still has to do a lot of work
to figure out what is the hidden concept.
How would you do this in natural language?
You would just simply say the ones are the ones
where there's at least two red squares.
This shows the power of language,
the ability to access the concepts directly,
more succinctly, and leave less to statistical chance.
It's also just a more natural
and human way of teaching.
I'm gonna talk about two ways
that we've implemented this general idea,
the first in the context of information extraction.
The goal is to take large volumes from a text
and mine information in a structured way.
In this particular example,
we're trying to figure out
whether two people are married
based on reading a passage.
Traditionally what you would do
is get a bunch of annotators to look at this data
and read it and answer yes or no,
are the two people married.
You can imagine this is very labor-intensive.
But moreover, you're only getting
a single bit of information, a yes or a no,
from all this hard work.
Let's do something else.
Let's go a little bit farther
and ask the annotator, "Why did you think so?
Can you provide an explanation?
Can you show your work?"
The annotator in this example might say,
"Well, because the words his wife are a strong cue here."
We took these explanations
and then we used semantic parsing
to convert them into programs,
a language that computers can understand,
and we can run these programs
on lots of unlabeled examples,
and in the process, create a giant,
but somewhat noisy, data set which we can use
to train the model.
We experimented with several different domains,
and overall, we were able to get
the same level of accuracy using these explanations
as opposed to labeling yes or no.
But even taking into account
that explanations take longer, we were able to get
a 3 to 50x improvement with explanations,
showing the power of natural language.
Here's another example.
Suppose you're a graphic designer
and you wanted to construct beautiful 3D scenes
out of little primitives.
It would be nice if you could speak
to your assistant and say,
"Add two chairs five spaces apart,"
and have this wonderful scene just appear.
But this task is very complicated
if you want to build it up
from the very small building blocks,
and current machine (mumbles) simply fail on it.
But what would a human do?
If you were trying to tell someone how to do this,
you'd probably try to explain it.
Okay, you add a chair, move five squares to the left,
and add another chair.
But moreover, if people don't understand what chairs are,
you can elaborate and recurse and say,
"Okay, a chair has four legs,
a chair base, and a chair back."
In this very adaptive way,
you're beginning to teach the system
in a more flexible and hierarchical way
than simply saying a yes or a no.
Here's an interface we built, a prototype system
where the user is trying to accomplish a goal,
build some sort of structure.
The user types into a text box.
If the system understands, then all is well.
The user gets his palm tree
or whatever he's trying to build and moves on.
If the system doesn't understand,
then there's a learning opportunity here.
The system can explain.
Here's how you build a palm tree.
In the process, the system gets better,
on-the-fly, over time.
In addition, the user still gets his palm tree.
This is kind of a win-win situation here.
We ran this pilot study on Amazon Mechanical Turk
over three days, and I was simply blown away
by the amount of creativity that people have online.
They were able to build
these amazing types of structures,
but in the process, teaching the system a language
that helped them be more productive at doing so.
So in conclude, I want you to take away
that language is this powerful tool
for communication that we've been using effectively
as humans to humans,
but I think it's an important opportunity
to infuse this capability
for human/machine communication as well.
We've shown that by allowing people
to provide explanations or definitions,
we can dramatically speed up learning.
But I wanna point out this is only the very beginning.
There's many hard research problems here,
but also many opportunities
to improve learning and make it more transparent
and effective, so thanks.
(applause)