
Portuguese: 
LOCUTOR: O programa a seguir
é trazido a vocês pela Caltech.
Tradução feita por Luciana Rocha Pedro,
sob supervisão do PESC na COPPE-UFRJ.
YASER ABU-MOSTAFA:
Bem-vindos novamente.
Na última aula, introduzimos as
máquinas de vetores de suporte.
E, se você pensar nos modelos lineares como
carros econômicos, que foi o que dissemos
quando os introduzimos, você pode pensar
nas máquinas de vetores de suporte como
a linha de luxo desses carros.
E, de fato, elas não são nada além de um
modelo linear em uma forma mais simples,
exceto que elas realmente estão um pouco
mais empenhados com relação ao desempenho.
E a chave para o desempenho foi
a ideia da margem... ou seja,
se os dados são linearmente separáveis,
existe mais do que uma reta que pode
separar os dados.

English: 
 
ANNOUNCER: The following program
is brought to you by Caltech.
 
YASER ABU-MOSTAFA: Welcome back.
Last time, we introduced support
vector machines.
And if you think of linear models as
economy cars, which is what we said
when we introduced them, you can think
of support vector machines as the
luxury line of those cars.
And indeed, they are nothing but
a linear model in the simplest form
except that they actually are a little
bit more keen on the performance.
And the key to the performance was the
idea of the margin-- is that if the
data is linearly separable, there
is more than one line that can
separate the data.

Portuguese: 
E, se você considerar a reta que
tem a maior margem, mais afastada
do ponto mais próximo,
então você tem uma vantagem.
É tanto uma vantagem intuitiva quanto
uma vantagem que pode ser teoricamente
estabelecida, o que fizemos
através da ideia da função
de crescimento, neste caso.
E, depois que determinamos que é
uma boa ideia maximizar a margem,
nós decidimos fazer isso.
E, depois de uma sequência de operações
matemáticas, terminamos com um Lagrangiano
que vamos maximizar.
E o Lagrangiano tem
propriedades muito interessantes.
É quadrático, então
é uma função simples.
E as restrições são restrições de
desigualdade, restrições de desigualdade
muito simples, neste caso,
e uma restrição de igualdade.
E não vamos realmente
resolvê-las nós mesmos.
Vamos passar o problema para um
pacote de programação quadrática.
E, então, vamos esperar a
programação quadrática nos retornar
os valores dos alfas.
Agora, a programação quadrática terá
problemas em encontrar uma solução
se o número de exemplos for grande.

English: 
And if you take the line that has the
biggest margin, furthest away from the
closest point, then you
have an advantage.
It's both an intuitive advantage and
an advantage that can be theoretically
established, which we did through
the idea of the growth
function in this case.
And after we determined that it's a good
idea to maximize the margin, we
set out to do that.
And after a chain of mathematics, we
ended up with a Lagrangian that
we're going to maximize.
And the Lagrangian has very
interesting properties.
It's quadratic, so it's
a simple function.
And the constraints are inequality
constraints, very simple inequality
constraints in this case, and
one equality constraint.
And we're not going to actually
do the solving ourselves.
We're going to pass the problem on to
a package of quadratic programming.
And then, we will wait for quadratic
programming to give us back
the values of alphas.
Now, quadratic programming will have
problems with solving this if the
number of examples is bigger.

English: 
So once you get to thousands,
its becomes an issue.
And then, there are all kinds of
heuristics to deal with that case.
And in general, quadratic programming
sometimes needs babysitting, tweaking,
limiting range, and whatnot.
But at least someone else wrote it, and
we only have to do these things in
order to get the solution, rather
than to write this from scratch.
So it's not a bad deal for us.
And once we get the alphas back, there
is a very interesting interpretation
that happens.
You look at the alphas, the
Lagrange multipliers.
And some of them will
be greater than 0.
And most of them will be 0,
should be identically 0.
In reality, because of the rounding
error, we might get
them very, very small.
And you set them manually to 0.
But the guys that happen to be bigger
than 0 are special, and they are
called the support vectors.
And whether you're working in the X space,
or took the X space and moved to
a Z space and moved back here, the
support vectors are the ones that
achieve the margin.
They are sitting exactly at
the critical point here.

Portuguese: 
Então, quando você tiver milhares de
exemplos, isso se torna um problema.
E, então, há todos os tipos de
heurísticas para lidar com essa situação.
E, em geral, a programação quadrática,
às vezes, precisa de cuidados, ajustes,
limitação do domínio e
condições semelhantes.
Mas, pelo menos, alguém já as programou
e nós temos apenas que executá-las
para obter a solução, ao invés
de escrevê-las a partir do zero.
Assim, não é uma situação ruim para nós.
E, quando recebermos os alfas, há
uma interpretação muito interessante
que aparece.
Você olha para os alfas, os
multiplicadores de Lagrange.
E alguns deles serão maiores que zero.
E a maioria deles será zero,
deveriam ser identicamente zero.
Na prática, por causa do erro de
arredondamento, podemos obtê-los
muito, muito pequenos.
E você os configura manualmente a zero.
Mas os multiplicadores que são
maiores do que zero são especiais
e eles são chamados
de vetores de suporte.
E, se você está trabalhando no espaço
X ou considerou o espaço X e o moveu
para um espaço Z e o moveu de volta ao
espaço X, os vetores de suporte são os pontos
que atingem a margem.
Eles estão localizados
exatamente no ponto crítico aqui.

English: 
And they're used to define the plane.
And the most important aspect about them
is the fact that you can predict
a bound on the out-of-sample error, based
on the number of support vectors
that you get.
And it is the normal form of dividing
the complexity, in terms of the number
of parameters, in this case the non-zero
alphas or the number of
support vectors that corresponds to it,
divided by more or less the number
of examples.
We have seen that before.
But the key issue here is something
really worth noting.
The right-hand side without the expected
value-- the expected value just
tells us that we average this over
a number of cases for this to be true.
We are dividing the number of support
vectors by N. The number of support
vectors is an in-sample quantity.
You do all of this.
You get the alphas back.
And you can tell what the number of
support vectors are, in sample.
So we are able to check on the
out-of-sample error, using

Portuguese: 
E eles são usados para definir o plano.
E o aspecto mais importante sobre
eles é o fato de que você pode prever
um limite para o erro fora-da-amostra,
com base no número de vetores de suporte
que você obtém.
E é a maneira comum de dividir a
complexidade, em termos do número
de parâmetros, neste caso os
alfas não nulos ou o número
de vetores de suporte correspondentes
dividido por, mais ou menos,
o número de exemplos.
Estudamos isso anteriormente.
Mas o problema principal aqui
é algo realmente digno de nota.
O lado direito, sem o valor
esperado... o valor esperado
apenas nos diz que calculamos a média com relação
a uma série de casos em que isso é verdadeiro.
Estamos dividindo o número de vetores
de suporte por N. O número de vetores
de suporte é uma variável
dentro-da-amostra.
Você faz tudo isso.
Você obtém os alfas.
E você pode dizer qual é o número de
vetores de suporte... dentro-da-amostra.
Assim, somos capazes de verificar
o erro fora-da-amostra utilizando

Portuguese: 
uma variável dentro-da-amostra.
E sabemos, pela nossa
experiência, que isto é importante.
Porque agora, não apenas vamos
verificar o erro dentro-da-amostra,
vamos também verificar o erro
fora-da-amostra utilizando
uma variável que podemos medir.
Agora, nós aplicamos os vetores de suporte
apenas a dados linearmente separáveis,
pelo menos na aula anterior.
Nesta aula, vamos
generalizar essa situação.
E, para lidar com casos em que os
dados não são linearmente separáveis
no espaço X, o que fizemos foi usar uma
transformação não linear, como fizemos anteriormente
com modelos lineares.
E algo curioso aconteceu
quando fizemos isso.
Como fomos a um espaço Z
de dimensão bastante alta.
E obtivemos uma superfície que é
irregular, o que, em nossa mente,
ativa alarmes com
relação à generalização.
Mas acabamos com algo que pode ser
declarado de forma simplista como:
obtemos uma hipótese complexa,
que é a curva irregular,

English: 
an in-sample quantity.
And we know, by the previous experience,
that this is a biggie.
Because now, not only are we going to
check on the in-sample error, we're
also going to check on the
out-of-sample error using
a quantity we can measure.
Now, we applied support vectors only
to linearly separable data, at
least in the previous lecture.
In this lecture, we will
generalize that.
And in order to deal with cases where
the data is not linearly separable in
the X space, what we did is we used
nonlinear transform, as we did before
with linear models.
And a curious thing happened
when we did that.
Because we went to a fairly
high-dimensional Z space.
And we got a surface that is wiggly,
and so on, which in our mind raises
alarm bells as far as generalization
is concerned.
But we ended up with something that can
be stated in a simplistic form as:
we get a complex hypothesis,
which is the snake,

Portuguese: 
mas não pagamos o preço por
isso em termos da complexidade
do conjunto de hipóteses.
Lembre-se, a complexidade do conjunto
de hipóteses é pelo que pagamos
o preço em termos da análise VC, certo?
E é tipicamente o caso,
quando o H é mais complexo,
cada hipótese também é complexa.
Mas aqui, nós meio que trapaceamos.
E nós conseguimos usar um
espaço Z de alta dimensão,
então o H é complexo, o
conjunto de hipóteses é complexo.
Mas a hipótese que
obtemos é, na verdade...
embora pareça muito complexa, ela
realmente pertence a um conjunto simples,
porque maximiza a margem.
Assim, obtemos a vantagem de um erro
fora-da-amostra bastante pequeno,
apesar do fato de que capturamos o comportamento muito
bem, obtendo o erro dentro-da-amostra igual a zero.
Agora, isso é exagerado.
Eu permiti isso.
Mas há um fundo de verdade nisso.
E ele capta para que servem as
máquinas de vetores de suporte.
Elas permitem que você seja muito
sofisticado, sem pagar totalmente
o preço por isso.

English: 
but we don't pay the price for it in
terms of the complexity of the
hypothesis set.
Remember, the complexity of the
hypothesis set is what we pay the
price for in terms of the
VC analysis, right?
And it's typically the case that when
H is more complex,
each individual is also complex.
But here, we sort of did some cheating.
And we managed to use a high-dimensional
Z space,
so it's a complex H,
complex hypothesis set.
But the hypothesis we get is really--
although it looks very complex, it
really belongs to a simple set because
it maximizes the margin.
So we get the benefit of a fairly low
out-of-sample error, in spite of the
fact that we captured the fitting very
well by getting the 0 in-sample error.
Now, this is exaggerated.
I grant you that.
But it has an element of truth in it.
And it captures what support
vector machines do.
They allow you to go very sophisticated,
without fully paying the
price for it.

Portuguese: 
Hoje, vamos continuar esse
assunto estendendo as máquinas
de vetores de suporte do caso básico
e vamos cobrir o método principal,
que são os métodos do núcleo,
na maior parte da aula.
E os dois tópicos são os núcleos,
referidos como o truque do núcleo,
na verdade, formalmente, e este tópico
lida com a transformação não linear
quando o espaço Z puder ser
muito sofisticado, tão sofisticado
que você não pode nem mesmo escrevê-lo.
É um espaço de dimensão infinita.
O que seria completamente
impensado, se você estivesse usando
apenas modelos lineares.
O outro tópico é estender as
máquinas de vetores de suporte
do caso linearmente separável para o caso
não linearmente separável, permitindo-as
cometer erros.
Então, será praticamente assim, se
você estivesse usando perceptrons
e fosse para o algoritmo de bolso, isso seria como
se você passasse das máquinas de vetores de suporte
que introduzimos... que vamos agora nomear
como margem rígida, porque elas obedecem
a margem estritamente... a uma margem
flexível, que permite alguns erros.

English: 
Today, we're going to continue
this by extending the support vector
machines in the basic case, and we're
going to cover the main method, which
is the kernel methods, in
the bulk of the lecture.
And the two topics are the kernels,
referred to as the kernel trick
actually, formally, and that takes care
of the nonlinear transformation
when the Z space can be very
sophisticated, so sophisticated that
you can't even write it down.
It's an infinite-dimensional
space.
Which would be completely unheard
of if you're using plain
vanilla linear models.
The other topic is to extend support
vector machines from the linearly
separable case to the non-linearly-separable
case, allowing yourself to
make errors.
So this is pretty much that, if you were
using perceptrons and went to
pocket, this would be if you went from
the support vector machines that we
introduced-- that we're going to label now
hard-margin, because they strictly
obey the margin-- to a soft margin
that allows some errors.

English: 
And both of these extensions will expand
your horizons in terms of the
problems you're able to deal with.
And chances are, in a practical problem,
you're going to use both.
You're going to go to
a high-dimensional space, sometimes
an infinite-dimensional space, without
paying the price for it, as we'll see
in a moment.
And in addition to that, you're going
to allow some errors in order not to
make outliers dictate an unduly complex
nonlinear transformation.
So both of them will come in handy.
Let's start with the kernels.
So the idea of the kernels is that I
want to go to the Z space without
paying the price for it.
And we are already halfway there.
If you remember from last lecture,
the way z manifests itself in the
computation is very simple.
You do an inner product in the Z
space, and from then on, it's
a regular quadratic programming problem.
And the dimensionality of the problem
depends on the number of examples, not
on the dimensionality of the Z space,
once you get the inner product.

Portuguese: 
E ambas as extensões vão expandir
os seus horizontes em termos
dos problemas que você é capaz de lidar.
E, provavelmente, em um problema
prático, você usará ambas.
Você vai para um
espaço de alta dimensão,
às vezes um espaço de dimensão infinita,
sem pagar o preço por isso, como veremos
em um momento.
E, além disso, você vai
permitir alguns erros,
para não permitir que os valores atípicos conduzam a
uma transformação não linear indevidamente complexa.
Portanto, os dois tópicos serão úteis.
Deixe-me começar com os núcleos.
Então, a ideia dos núcleos é
que eu quero ir para o espaço Z
sem pagar o preço por isso.
E já estamos no meio do
caminho para esta solução.
Se você se lembrar da última
aula, a forma que o Z aparece
no cálculo é muito simples.
Você calcula um produto interno
no espaço Z e, em seguida,
você tem um problema de
programação quadrática usual.
E a dimensionalidade do problema
depende do número de exemplos,
e não da dimensionalidade do espaço Z,
uma vez que você obtém o produto interno.

Portuguese: 
E quando você obtém o resultado, você
conta o número de vetores de suporte,
o que realmente depende mais
uma vez do número de exemplos,
e não da dimensionalidade. Obviamente,
a dimensionalidade vai aparecer,
porque você pode acabar com uma superfície
tão irregular que qualquer outro vetor
torna-se um vetor de suporte para
sustentar este tipo de contorno.
Mas, basicamente, a dimensionalidade
do Z, explicitamente, não aparece.
No entanto, ainda temos que calcular
um produto interno no espaço Z.
Então, neste slide, eu vou focar
em uma pergunta muito simples.
O que eu preciso do espaço
Z, para ser capaz de utilizar
o mecanismo que aprendemos até agora?
Então, o que fazemos?
Temos um Lagrangiano para resolver.
Assim, o Lagrangiano
possui esta fórmula.
E, como estamos interessados no que
fazemos no espaço Z, eu vou colorir
estes termos de roxo.
Portanto, para ser capaz de utilizar
o Lagrangiano, eu preciso obter

English: 
And when you get the result back, you
count the number of support vectors,
which really depends again on the
number of examples, not the
dimensionality. Obviously, the
dimensionality will come in because
you may end up with such a wiggly
surface that every other vector
becomes a support vector in order to
support this type of boundary.
But basically, the dimensionality
of Z explicitly doesn't appear.
Nonetheless, we still have to take
an inner product in the Z space.
So in this viewgraph, I'm going to zoom
in to the very simple question.
What do I need from the Z space in
order to be able to carry out the
machinery that I have seen so far?
So what do we do?
We have a Lagrangian to solve.
So the Lagrangian looks like this.
And since we are interested in what we
do in the Z space, I'm going to make
these purple.
So in order to be able to carry out
the Lagrangian, I need to get the

Portuguese: 
o produto interno no espaço Z.
Mas obter um produto interno no
espaço Z é menos exigente do que obter
o próprio vetor no espaço Z.
Pense nisso desta maneira.
Eu sou um guardião do espaço Z.
Estou fechando a porta.
Ninguém tem acesso ao espaço Z.
Você vem a mim com pedidos.
Se você me der um x e me
perguntar qual é a transformação,
esta é uma grande exigência.
Eu tenho que lhe entregar um grande z.
E eu posso não permitir isso.
Mas digamos que tudo o que eu estou
disposto a lhe dar são produtos internos.
Você me fornece o x e o x', eu
fecho a porta, faço as minhas contas
e volto com um número, que é o produto
interno entre z e z', sem realmente
lhe dizer quais eram o z e o z'.
Isso seria uma operação simples.
E, se você puder conviver com
isso, então isso é algo muito bom.
Porque, agora, podemos nos concentrar
completamente nos produtos internos no espaço Z
e ver se isso pode conduzir
a uma simplificação.

English: 
inner product in the Z space.
But getting an inner product in the Z
space is less demand than getting the
actual vector in the Z space.
Think of it this way.
I am a guardian of the Z space.
I'm closing the door.
Nobody has access to the Z space.
You come to me with requests.
If you give me an x and ask me,
what is the transformation,
that's a big demand.
I have to hand you a big z.
And I may not allow that.
But let's say that all I'm willing
to give you are inner products.
You give me x and x dash, I close the
door, do my thing, and come back with
a number, which is the inner product
between z and z dash, without actually
telling you what z and z dash were.
That would be a simple operation.
And if you can get away with it, then
that's a pretty good thing.
Because now, we can completely focus
on inner products in the Z space
and see if that can lead
to a simplification.

English: 
So in this slide, we are going through
step by step in the entire process to
see if we ever need anything
out of the Z space, other
than the inner product.
So in forming the Lagrangian,
we need the inner product.
Let's look at the constraints.
We have to pass the constraints
to quadratic programming.
This is the first constraint.
I don't see any z.
So we're cool.
The other one, the equality,
I don't see any z either.
So if you have an inner product in the
Z space, you are ready with the
problem that you're going to pass
on to the quadratic programming.
You give it to quadratic programming.
Back comes the vector alpha: alpha_1,
alpha_2, up to alpha_N. Now, you need
to implement your function.
You're not just solving this.
You actually are going to hand a hypothesis
to your customer, right?
And the hypothesis looks like this.
Now, I look at this.
And now, I'm a little bit worried
because here's w and z.
Although this is an inner product, it's
not an inner product between points
in X-- between w, and I don't know what
w is. w lives in the Z space.

Portuguese: 
Portanto, neste slide, vamos
analisar passo a passo todo o processo
para ver se, alguma vez,
precisamos de algo do espaço Z,
além do produto interno.
Assim, para construir o Lagrangiano,
precisamos do produto interno.
Vamos analisar as restrições.
Temos que passar as restrições
para a programação quadrática.
Esta é a primeira restrição.
Eu não vejo nenhum z.
Então, tudo bem.
A outra restrição, a igualdade,
eu também não vejo nenhum z.
Então, se você tiver um produto interno
no espaço Z, você já tem o problema
que você vai passar para
a programação quadrática.
Você o passa para a programação quadrática.
Você recebe o vetor de alfas: alfa_1,
alfa_2 até alfa_N. Agora, você
precisa implementar a sua função.
Você não está apenas resolvendo isso.
Você vai, na prática, entregar uma
hipótese para o seu cliente, certo?
E a hipótese é assim.
Agora, eu olho para essa fórmula.
E, agora, eu estou um pouco
preocupado, porque aqui estão o w e o z.
Embora isto seja um produto interno, não
é um produto interno entre pontos do X...
é entre os w's e eu não sei o
que é o w. O w mora no espaço Z.

English: 
So I want to make sure: can I get away
with just inner products in order to
solve this?
Well, w is no mystery to us.
We have solved for it explicitly.
And we found that you can find w by
adding up, over all the vectors but in
particular over the support vectors
that happen to have nonzero alpha,
this quantity.
If you take this quantity back and plug
it in for w, what do you get in
terms of what you need to compute?
You need to compute inner products.
That's encouraging.
One more item, this innocent-looking b
is loaded.
This is one of the parameters
that we solved for.
Maybe that's what will kill us.
Let's see.
How do I solve for b?
I solve for b by taking any support
vector, and solving for this equation.
So I take a support vector,
m, and plug it in.
Am I in trouble because I have the w?
No, we already saw that w is here.
It has this form.

Portuguese: 
Então, eu quero ter certeza: eu
posso aceitar apenas produtos internos
para resolver isso?
Bom, o w não é nenhum mistério para nós.
Nós o encontramos explicitamente.
E descobrimos que você pode encontrar o w
somando com relação a todos os vetores mas,
em particular, com relação aos vetores de
suporte, que têm alfa diferente de zero,
esta expressão.
Se você considerar esta fórmula novamente
e substituí-la pelo w, o que você obtém
em termos do que você precisa calcular?
Você precisa calcular produtos internos.
Isso é encorajador.
Mais um termo, este aparentemente
inocente b é considerado.
Este é um dos parâmetros
que encontramos.
Talvez seja isto o
que vai nos atrapalhar.
Vamos ver.
Como eu posso encontrar o b?
Eu encontro o b considerando qualquer
vetor de suporte e resolvendo esta equação.
Assim, eu considero um vetor
de suporte m e o substituo.
Estou em apuros, porque eu tenho o w?
Não, já vimos que o w está aqui.
Ele tem essa forma.

Portuguese: 
Assim, eu posso substituí-lo aqui.
E tudo o que eu preciso para
encontrar o b aqui é esse termo.
Feito.
Nós apenas lidamos com z quando
o produto interno é considerado.
Agora, isso levanta uma
possibilidade muito interessante.
Se eu for capaz de calcular
o produto interno no espaço Z,
sem visitar o espaço Z, eu ainda
posso utilizar este mecanismo.
Podemos avançar ainda mais.
Se eu puder utilizar o produto
interno no espaço Z, sem saber
qual é o espaço Z, eu ainda estarei bem.
Você pode se perguntar,
como eu farei isso?
Esta é uma pergunta diferente.
Mas tudo o que precisamos fazer agora
é o seguinte: eu lhe forneço o x e o x',
dois pontos no espaço X.
Você faz uma mágica, retorna
com um número e me promete que
este é o produto interno no
espaço Z, o misterioso espaço Z.

English: 
So I can plug it in here.
And all I need, in order to solve
for b here, is this fellow.
Done.
We only deal with z as far as the
inner product is concerned.
Now, that raises a very interesting
possibility.
If I am able to compute the inner
product in the Z space, without
visiting the Z space, I still
can carry this machinery.
We can even move further.
If I can carry the inner product in the
Z space, without knowing what the Z
space is, I still will be OK.
You may wonder, how am
I going to do that?
That's a different question.
But all we need to do now is something:
I give you x and x dash,
two points in the X space.
You do your thing, come back with
a number, and promise me that this is
the inner product in the Z space,
the mysterious Z space.

Portuguese: 
E, então, eu vou utilizar todo o mecanismo
de vetores de suporte no seu espaço,
que eu nunca visitei, e encontrar
os vetores de suporte, que vivem
no seu espaço, e obter o desempenho com
base no número de vetores de suporte,
e entregar ao cliente e lhe dizer
que eu usei um espaço realmente
muito sofisticado.
E, então, ele perguntaria, qual espaço?
E, normalmente, temos nossos momentos de
surpresa e silêncio em aprendizado de máquinas,
em que você faz algo e você sabe
que a existência é suficiente.
Então, vamos pensar nesta ideia
como sendo um produto interno
generalizado entre o x e o x',
nós os transformamos e calculamos
um produto interno no espaço Z.
Vamos tratá-lo como se
fosse um produto interno
generalizado no espaço X.
Assim, quais são os componentes?
Você considera dois pontos.
Vamos nomeá-los x e x',
no espaço de entrada.
E precisamos dessa variável.
Portanto, esta variável
é uma função do x e do x'.
Isso nós sabemos.
Nós não sabemos qual função,
mas sabemos que é uma função.
Por quê?

English: 
And then, I will do all the support
vector machinery in your space that I
never visited, and come up with the
support vectors which live in your
space, and get the performance based on
the number of support vectors, and
deliver to the customer, and tell
them I used really a very
sophisticated space.
And then, they would ask, what is it?
And usually, we have our stunned-silence
moments in machine learning
where you do something, and you know
that the existence is sufficient.
So let's look at this idea as
being a generalized inner
product. x and x dash,
we transform them and take an inner
product in the Z space.
We're going to treat it as if
it was a generalized inner
product in the X space.
So what are the components?
You take two points.
We're going to label them x and
x dash in the input space.
And we need this quantity.
So this quantity is a function
of x and x dash.
That much we know.
We don't know which function,
but we know it's a function.
Why's that?

Portuguese: 
Porque o z é, exclusivamente,
uma função do x.
O z' é, exclusivamente,
uma função do x',
pois são versões
transformadas desses pontos.
E, assim, o seu produto interno
será uma função que é determinada
pelo x e pelo x'.
Portanto, esta é a função
que eu estou procurando.
Agora, vamos chamar isto
de núcleo, daí o nome.
Portanto, este é o núcleo que usaremos.
Um núcleo corresponderá
a algum espaço Z.
E, como eu já disse, isto será
rotulado como um "produto interno"...
Eu o coloquei entre aspas porque
é geral... entre o x e o x'.
Não é diretamente um produto
interno, mas um produto interno depois
de uma transformação.
Agora, deixe-me lhes
fornecer um exemplo.
É um exemplo um pouco simplista,
mas apenas para ilustrar a ideia.
Digamos que eu tenho o
x sendo bidimensional.
Espaço euclidiano bidimensional, então
eu tenho duas coordenadas, x_1 e x_2.
E eu estou usando uma
transformação não linear,
que é um polinomial de segunda ordem.
Estudamos isto várias vezes.

English: 
Because z is exclusively
a function of x.
z dash is exclusively a function
of x dash, being
transformed versions of them.
And therefore, their inner product will
be a function that is determined
by x and x dash.
So this is the function that
I'm looking for.
Now, we're going to call this
the kernel, hence the name.
So this is the kernel
we're going to use.
A kernel will correspond
to some Z space.
And as I mentioned, this will be
labeled as an inner product--
I put it between quotations because it's
general-- between x and x dash.
It's not a straight inner product,
but an inner product after
a transformation.
 
Now let me give you an example.
It's a bit of a simplistic example,
but just to illustrate the idea.
Let's say that I have x
being two-dimensional.
Two-dimensional Euclidean space, so
I have two coordinates, x_1 and x_2.
And I'm using a nonlinear
transformation, which happens to be
2nd-order polynomial.
We have seen that a number of times.

English: 
So what do we have?
We have a transformation that takes the
vector x, produces the vector z.
And that would be the full 2nd-order
guy, so we have 6 coordinates
corresponding to all terms of the second
order involving x_1 and x_2, and
this is the guy.
We used that before.
And therefore, if you want to get the
kernel, which is formally the inner
product between the transformation of
x and x dash, you will get this.
Nothing mysterious, you're just going
to substitute for this for x, and
substitute for it again for x dash,
multiply the corresponding terms, and
add them up.
And this is what you get.
So the only lesson we're learning here
is that indeed this is just a function
of x and x dash.
If I didn't know this was an inner
product, I can look at this.
This is a function I can compute.
Fine, now we come to the trick.
 

Portuguese: 
Então, o que nós temos?
Nós temos uma transformação que
considera o vetor x, produz o vetor z.
E este seria o termo de segunda ordem
completo, por isso temos seis coordenadas
correspondentes a todos os termos de
segunda ordem envolvendo x_1 e x_2,
e essa é expressão.
Usamos isso anteriormente.
E, portanto, se você deseja obter
o núcleo, que é, formalmente,
o produto interno entre a transformação
do x e do x', você obterá esse resultado.
Nada misterioso, você vai apenas
substituir o x nesta expressão
e substituir o x' nesta expressão novamente,
multiplicar os termos correspondentes
e adicioná-los.
E isso é o que você obtém.
Assim, a única lição que aprendemos aqui
é que, na verdade, isso é apenas uma função
do x e do x'.
Se eu não soubesse que isto era um produto
interno, eu poderia olhar para isso.
Esta é uma função que eu posso calcular.
Tudo bem. Agora chegamos ao truque.

English: 
Can we compute this kernel without
transforming x and x dash?
So let's look at the example again.
I'm going to now improvise a kernel.
It doesn't transform things
to the Z space, and then
does the inner product.
It just tells you what the kernel is.
And then, I'm going to convince you that
this kernel actually corresponds
to a transformation to some Z space,
and taking an inner product there.
So here is my kernel.
It's function of x and x dash.
And it happens to have that form.
This is a special form that
will help me later on.
But the main thing you would want to
look at is that this is not
an inner product in the X space, in spite
of the fact that it involves one
computationally.
I take this, add 1, and square it.
So this is just a function.
I happen to formalize it in terms
of an inner product, just
because it's simple.
So this is a function.
This is also not clearly an inner
product in any other space,

Portuguese: 
Podemos calcular este núcleo
sem transformar o x e o x'?
Então, vamos analisar
o exemplo novamente.
Eu vou, agora, improvisar um núcleo.
Ele não transforma os pontos
para o espaço Z e, então,
calcula o produto interno.
Ele apenas lhe diz qual é o núcleo.
E, então, eu vou convencê-lo
de que este núcleo, na verdade,
corresponde a uma transformação para algum
espaço Z e calcular um produto interno lá.
Assim, aqui está o meu núcleo.
É função do x e do x'.
E tem essa forma.
Esta é uma forma especial
que me ajudará posteriormente.
Mas a principal característica que
você gostaria de observar é que isso
não é um produto interno no espaço
X, apesar do fato de que envolve um,
computacionalmente.
Eu considero esta expressão,
adiciono um e elevo ao quadrado.
Portanto, esta é apenas uma função.
Eu a formalizei em termos
de um produto interno,
apenas porque é simples.
Portanto, isto é uma função.
Essa expressão também não é, claramente,
um produto interno em qualquer outro espaço,

Portuguese: 
transformado ou não.
É apenas uma função.
Então, agora, eu vou
considerar esta função.
E eu vou escrevê-la explicitamente
em termos dos componentes.
Eu ainda estou trabalhando
com uma entrada bidimensional.
Portanto, isto seria
o produto interno aqui
seria x_1 x_1' mais x_2 x_2'.
Portanto, esta é a
expressão que eu tenho.
E eu posso, definitivamente,
elevar expressões ao quadrado.
E eu obtenho esta expressão.
Portanto, este é o valor do núcleo.
Agora, essa expressão
parece bastante familiar.
Parece um produto interno,
exceto por estes 2's chatinhos.
Isso teria sido... como se eu tivesse
transformado para a segunda ordem
e a considerasse, mas
eu tenho esses 2's.
Mas isso vai me desanimar?
Não.
Isto ainda é um produto interno.
E a transformação para o espaço que
faz com que isto seja um produto interno
é essa expressão. O x passa
por esta transformação.
Viu? Eu coloquei uma raiz quadrada.
É uma transformação não linear, então
eu posso colocar qualquer coisa, certo?
Esta é a minha transformação.
A única pergunta que você precisa me
fazer é saber se eu apliquei exatamente

English: 
transformed or otherwise.
It is just a function.
So now, I'm going to
take this function.
And I'm going to write it explicitly
in terms of the components.
I'm still working with
two-dimensional input.
So this would be--
the inner product here would be x_1
x_1 dash plus x_2 x_2 dash.
So this is the quantity that I have.
And I can definitely square things.
And I get this quantity.
So this is the value of the kernel.
Now, this looks awfully familiar.
It looks like an inner product,
except for these annoying 2's.
This would have been as if
I transformed to the 2nd order and
took it, except that
I have these guys.
But is this going to discourage me?
No.
This still is an inner product.
And the transformation to the space that
makes this an inner product is
this fellow. x goes through this.
See? I put a square root.
Nonlinear transform, so I can put
anything, right?
This is my transformation.
The only test you need to ask me is
whether I applied exactly the same

Portuguese: 
a mesma transformação ao x'.
Sim, eu apliquei.
Assim, esta é, de fato, uma
transformação do x para o z.
E, quando eu calculo o produto
interno, o que eu obtenho?
Eu obtenho o meu núcleo.
OK, boa aplicação do conceito aqui.
Mas a ideia é que isso é, realmente,
um monte de barulho por nada.
Eu poderia ter feito
isso em primeiro lugar.
Agora, pense no que acontece se... ao
invés de considerar 1 + x x' ao quadrado,
eu o elevar a 100.
Veja a diferença entre calcular
essa expressão e, na verdade,
considerar a transformação
de ordem 100, expandido isso
e expandido isso e, em seguida,
calculando o produto interno.
Então, vamos ver como isso funciona.
Isso é chamado de núcleo polinomial.
Então, agora, eu considero um espaço
de dimensão d, não 2, mas d em geral.
E eu gostaria de considerar
uma transformação desse espaço
em um polinômio de ordem Q.

English: 
transformation to x dash.
Yes, I did.
 
So that is indeed a transformation
of x into z.
And when I take the inner
product, what do I get?
I get my kernel.
OK, good establishment
of concept here.
But the idea is that's a lot
of fuss about nothing really.
I could have done this
in the first place.
Now, think of what happens if I am, instead
of taking 1 plus x x dash to the 2,
I do it to the 100.
Look at the difference between computing
this quantity and actually
going to the 100-order transformation,
getting this expanded, and getting the
other one expanded, and then
doing the inner product.
So let's see how this works.
That's called the polynomial kernel.
So now I take a d-dimensional
space, not 2, but general d.
And I would like to take
a transformation of that space into
Qth-order polynomial.

English: 
 
And here's my kernel, the
equivalent kernel.
I'm putting it between quotations
because the square root will happen
here again in abundance.
But it's just a scale.
The main idea is still there.
So here's my kernel.
I get 1 plus x-- that to the Q. First,
establishing what does it take
to compute this?
I don't know yet whether this
is a kernel, a valid kernel.
A valid kernel is an inner
product in some space.
I haven't seen that yet.
I pretty much suspect that it will be
by the previous argument, but that
will become clearer when I do this.
So when I evaluate this, so
this is an inner product.
Now, I have d dimensions.
So I have d of these guys corresponding
to each other, and then
multiply them, raised to the power Q. How
much computation does it take you
to do this?
I have d multiplications here.
That's the dimensionality
of the X space.
And then, I need to raise it to the
power Q. Whether Q is 10 or 100 or

Portuguese: 
E aqui está o meu núcleo,
o núcleo "equivalente".
Eu estou colocando-o entre aspas
porque a raiz quadrada vai aparecer
aqui novamente, várias vezes.
Mas é apenas uma escala.
A ideia principal ainda está lá.
Então, aqui está o meu núcleo.
Eu obtenho um mais x transposto x’ elevado a Q. Em
primeiro lugar, vamos estabelecer o que é preciso
para calcular isto?
Eu ainda não sei se isto é
um núcleo, um núcleo válido.
Um núcleo válido é um produto
interno em algum espaço.
Eu ainda não analisei isso.
Eu realmente suspeito que será,
por causa do argumento anterior,
mas isto ficará mais claro quando
eu desenvolver esta expressão.
Então, quando eu avaliar esta
expressão, isto é um produto interno.
Agora, eu tenho d dimensões.
Então, eu tenho d desses termos,
correspondendo um ao outro e, então,
eu os multiplico e elevo à potência
Q. Quanto cálculo você precisa
para fazer isso?
Eu tenho d multiplicações aqui.
Esta é a dimensionalidade do espaço X.
E, então, eu preciso elevá-la à
potência Q. Se o Q for 10, ou 100,

English: 
a million, it's the same complexity.
What I'm going to do, I'm going to take
the logarithm, multiply it by Q,
and exponentiate.
It doesn't matter what this fellow is.
This is a number.
I'm not expanding them.
I'm just plugging in these,
and this becomes a number.
Raising it to the power 100, or
raising it to the power 1000.
So this is a very simple
operation to carry out.
Now, think of what happens if you were
actually taking d equals 10 and Q
equals 100.
And you can see that if I actually
expanded this conceptually, not
computationally, it's very convenient
because every time an x appears, the x
dash version of it appears.
When I multiply any combination,
that will always be the case.
I will get a tremendous number of terms,
which are all orders up to Q, of
different combinations of the x's.
And I will have a huge expansion here.
And it shouldn't be a surprise that I
will be able to decompose this into

Portuguese: 
ou um milhão, será a mesma complexidade.
O que eu farei, eu vou considerar
o logaritmo, multiplicá-lo por Q,
e exponenciá-lo.
Não importa o valor do Q.
Isto é um número.
Eu não estou expandindo-o.
Estou apenas substituindo-o
aqui e isso se torna um número.
Elevando-o à potência 100,
ou elevando-o à potência 1.000.
Portanto, esta é uma operação
muito simples de se fazer.
Agora, pense no que acontece se você
estivesse realmente considerando d=10
e Q=100.
E, você pode ver que, se eu realmente
expandir isto conceitualmente,
não computacionalmente, é muito conveniente,
porque cada vez que um x aparece,
a versão x' desse x aparece.
Quando eu multiplicar qualquer
combinação, este sempre será o caso.
Eu vou obter um número enorme de
termos, que são todas as ordens até Q,
de diferentes combinações dos x's.
E eu terei uma enorme expansão aqui.
E não deveria ser uma surpresa
que eu serei capaz de decompor isso

Portuguese: 
em algo de x produto interno com algo
de x', porque cada termo aqui aparece
com ambos x e x'...
o mesmo truque que fizemos
aqui, porém mais elaborado.
Mas se você realmente o considerar
explicitamente, você terá que me fornecer
o vetor inteiro no espaço Z que resulta de
uma transformação polinomial de ordem 100
de um vetor com 10 coordenadas.
Isto será um bicho de
sete cabeças para lidar.
E agora eu posso fazer isso apenas
calculando esse número, apenas um número.
Considere o seu x e o seu x' para
obter este número, eleve-o à potência Q
e eu obtenho o resultado, como se eu tivesse
visitado o espaço Z e tivesse obtido esse número lá.
OK?
Então, se você estiver preocupado com
a raiz quadrada... porque, obviamente,
você obterá essa expressão.
Mas você obterá um monte de combinações.
Você obtém este termo, este termo e,
agora, você aplica uma potência 100.
Portanto, haverá todos
os tipos de combinações.
Portanto, você obterá um monte de
constantes na frente dos termos.
E você vai considerar a raiz quadrada dessas
constantes, para obter uma transformação
canônica.
Você pode ajustar a escala um pouco,
não totalmente, considerando o seu núcleo
ao invés de ser um mais, você tem
escalas 'a' e 'b' que atenuarão

English: 
something of x dot something of x dash,
because every term here appears with
both x and x dash--
the same trick we did here,
except more elaborately.
But if you actually go at it explicitly,
you have to give me the
entire vector in the Z space that
results from a 100th-order polynomial
transformation of a 10th-order guy.
This will be an ugly
beast to deal with.
And now I can do this by just computing
this number, just a number.
Take your x and x dash to get this
number, raise it to the power Q, and I
already have, as if I visited the Z
space and got that number there.
OK?
So if you're worried about the square
root-- because obviously,
you will get this.
But you will get a bunch
of combinations.
This gets here, gets here, and
now, you're power 100.
So there will be all kinds
of combinations.
So you'll get a bunch of constants
in front of the terms.
And you're going to square-root them in
order to get it to be a canonical
transformation.
You can adjust the scales a little bit,
not fully, by taking your kernel
instead of being 1 plus, you have scales
'a' and 'b' that will mitigate

English: 
a little bit the diversity of the
coefficients you get here.
But the bottom line is that a kernel
of this form does correspond to
an inner product in a higher space.
And by computing it just in the X space,
using this formula, I'm doing all I
need to do in order to carry
out the SV machinery.
 
Now, with this in mind-- I did this
by construction because it's an easy
polynomial, and we can visualize it.
We can get it in the 2 case,
and extrapolate mentally
for the other cases.
Now, we realize in this case that
we only need z to exist.
In this case, I showed you what z is
explicitly in the case of d equals 2,
and by hand waving in the
bigger case.
But you can visualize what z is.
So now, let's get carried away and try
to just get a kernel that maps us to z
without even imagining what z is.
So this is the case.

Portuguese: 
um pouco a diversidade dos
coeficientes que você obtém aqui.
Mas o mais importante é que um núcleo
desta forma realmente corresponde
a um produto interno em um espaço maior.
E, ao calculá-lo apenas no espaço X, usando
esta fórmula, estou fazendo tudo o que
eu preciso fazer para
utilizar o mecanismo SV.
Agora, com isto em mente... eu
fiz isso por construção, porque
é um polinômio simples
e podemos visualizá-lo.
Podemos obtê-lo no caso bidimensional
e extrapolá-lo mentalmente
para os demais casos.
Agora, percebemos que, neste caso,
precisamos apenas que o Z exista.
Neste caso, eu lhe mostrei qual
é o Z explicitamente no caso d=2
e por persuasão no caso geral.
Mas você pode visualizar o que é o Z.
Então, agora, vamos nos empolgar e tentar
apenas obter um núcleo que nos mapeie para o Z
sem sequer imaginar o que é o Z.
Portanto, este é o caso.

Portuguese: 
Consideramos isso como um
produto interno em algum espaço Z.
E, uma vez que você faz isso,
podemos utilizar todo o mecanismo
e as garantias, e vamos obter os vetores
de suporte, e vamos obter um controle para
a generalização, tudo o
que estudamos anteriormente.
E aqui está um exemplo de um núcleo.
Este será um núcleo útil.
Vamos analisá-lo.
É, definitivamente,
uma função do x e do x'.
Isso é o que eu gostaria de
exigir... o requisito mínimo
para que isso seja verdade.
E, agora, não tem nem mesmo um termo de
produto interno claramente, tanto no espaço X
quanto no espaço Z.
E eu não tenho nem ideia
do que é o produto interno.
Eu posso calcular essa função.
E a minha pergunta é, isso
realmente corresponde a um espaço Z,
um produto interno no espaço Z.
Então, isso é equivalente a considerar
cada um deles, por si só, transformá-los
em um z nesse espaço e considerar
um produto interno diretamente
entre o z e o z'?
Eu obtenho o mesmo número
ao visitar algum espaço?
A resposta é sim.
E o interessante é que esse
espaço tem dimensão infinita.

English: 
We take this to be an inner
product in some space, Z.
And once you do that, we are good with
the entire machinery, and the
guarantees, and we'll get the support
vectors, and we'll get generalization
bound, all of the above.
And here's an example of a kernel.
This will be a useful kernel.
Let's look at it.
It's definitely a function
of x and x dash.
That's as much as I would require--
the minimum requirement
for this to be true.
And now, it doesn't even have an inner
product term clearly, either in X
space or Z space.
And I have no idea what that is.
I can compute it.
And my question is, does this actually
correspond to some Z space, an inner
product in Z space.
So is this equivalent to taking each
of them by itself, transforming it
into z in that space, and taking
a straight inner product
between z and z dash?
Do I get the same number
by visiting some space?
The answer is yes.
And the interesting thing is that
that space is infinite-dimensional.
 

English: 
So by doing this operation, which is
not very difficult to compute, you
have done an inner product in
an infinite-dimensional space.
Congratulations!
And you will get the full benefit of
a horrific nonlinear transformation.
And you don't worry about the
ramifications of going to an infinite
dimensional space.
In the third lecture, when I introduced
linear models, if I told you
go to an infinite-dimensional space, you
would probably be screaming at me
because the generalization issues
become completely ridiculous.
But here, we don't worry.
We'll carry the machinery.
And then, we will count the number
of support vectors.
If I have 1000 examples and you only
have 10 support vectors, I know I'm in
good shape.
Well, if I get 500 support
vectors, tough luck.
It was a nice try.
There's no harm done.
So let's look at the
infinite-dimensional space.
I'm trying to convince you that
this indeed is the case.
What I'm going to do, I'm going
to take a simple case that I can
illustrate.

Portuguese: 
Assim, ao fazer esta operação, que
não é muito difícil de calcular,
você calculou um produto interno
em um espaço de dimensão infinita.
Parabéns!
E você obterá o benefício completo de
uma transformação não linear horrível.
E você não se preocupa com as
ramificações de ir a um espaço
de dimensão infinita.
Na terceira aula, quando eu introduzi
os modelos lineares, se eu lhe dissesse
para ir a um espaço de dimensão infinita,
você provavelmente estaria gritando comigo,
pois os problemas com a generalização
se tornariam completamente ridículos.
Mas aqui, nós não nos preocupamos.
Nós utilizamos o mecanismo.
E, em seguida, vamos contar o
número de vetores de suporte.
Se eu tiver 1.000 exemplos e obtiver
apenas 10 vetores de suporte, eu sei que
eu não terei problemas.
Bom, se eu obtiver 500
vetores de suporte, azar.
Foi uma boa tentativa.
Não houve nenhum dano.
Então, vamos analisar o
espaço de dimensão infinita.
Estou tentando convencê-los de
que esta é, de fato, a situação.
O que eu farei, eu vou considerar
um caso simples, para que eu possa
ilustrar.

Portuguese: 
Vamos considerar o núcleo, mas aplicá-lo,
neste caso, a um espaço de uma dimensão.
Assim, o x e o x' são ambos
escalares, eu os chamo de x e x'.
E eu vou considerar o gama como um, que
é a minha constante de modulação aqui,
então eu obtenho essa expressão.
Agora, deixe-me expressar esta
expressão usando séries de Taylor.
Em primeiro lugar, eu faço o seguinte.
Eu expando esta expressão, então eu obtenho x ao
quadrado, x' ao quadrado e menos duas vezes x x',
e o menos duas vezes retira
o menos e se torna um mais.
Portanto, eu obtenho e elevado a menos x ao
quadrado, e elevado a menos x' ao quadrado,
e elevado a 2 x x'.
Portanto, está é uma expansão
legítima desta expressão.
Então, agora, eu considero esse termo e o
expando usando Taylor e eu obtenho esta expressão.
Você considera qualquer que seja
o argumento, eleva à potência k,
divide por k fatorial,
soma de k=0 até infinito.
Esta é a série de
Taylor para o e, certo?
Agora, eu convenientemente retiro
o x' elevado a k, o x elevado a k
e o 2 elevado a k, separadamente.

English: 
Let's take the kernel, but apply it in
this case to 1-dimensional space.
So x and x dash are both scalars,
I call them x and x dash.
And I'm going to take gamma to be 1,
which is my modulating constant here,
so I get this fellow.
Now, let me express this
using Taylor series.
First, I do the following.
I expand this, so I get x squared, x
dash squared, and minus twice x x dash,
and minus twice gets the
minus, and becomes a plus.
So I get e to the minus x squared,
e to the minus x dash squared,
e to the 2 x x dash.
So that's a legitimate
expansion of this.
So now, I take this and expand it using
Taylor, and I get this fellow.
You take whatever the argument is,
raise it the power k, divide it by
k factorial, sum up from
k equals 0 to infinity.
That's the Taylor series
for the e, right?
Now, I conveniently took out the x dash
to the k, x to the k, and 2 to
the k, separately.

Portuguese: 
Isto é apenas para colocar
a expressão nessa forma.
E eu obtenho isso.
OK, isto é muito legal.
Você parece estar complicando a
situação, ao invés de simplificá-la.
Lembre-se, o meu objetivo é convencê-lo
de que existe um espaço Z no qual
esta função é um produto interno.
Então, agora, olhe
para esta última linha.
E, milagrosamente, alguns
termos ficarão azuis.
Mantenha os olhos neles.
Oh, você vê onde eu estou
querendo chegar com isso.
Os termos que possuem o x ficaram azuis.
Os termos que possuem
o x' ficaram vermelhos.
E por que eu estou fazendo isso?
Porque eu vou separar
isso em um produto interno,
algo vindo do x e algo vindo do x'.
E eu quero ter certeza de
que as partes serão iguais.
Se as partes forem iguais,
então a dimensionalidade
será, na verdade, esta soma.
Cada x e x' é uma coordenada.

English: 
This is just to put it in that form.
And I get that.
OK, that's very nice.
You seem to be complicating matters,
rather than simplifying it.
Remember, my purpose is to convince you
that there is a Z space in which
this is an inner product.
So now look at this last line.
And miraculously, some
terms will turn blue.
Keep your eyes on it.
 
Oh, you see where I'm going with this.
The guys that go with
x have turned blue.
The guys that will go with
x dash have turned red.
 
And why am I doing that?
Because I'm going to separate this
into an inner product, something
coming from x, and something
coming from x dash.
And I want to make sure
that it's the same.
Once it is the same, then
the dimensionality
is really this summation.
Each of these is a coordinate.

Portuguese: 
E esta é a contribuição
para o produto interno
dessa coordenada.
Então, aqui, eu estou obtendo
o x' multiplicado pelo x.
Ambos estão normalizados por e
elevado a menos x ao quadrado.
Então, se eu quiser saber qual
é a transformação para o x,
ela seria e elevado a menos x ao
quadrado multiplicado por x elevado a k.
Esta é uma coordenada.
E, como o k varia de zero até infinito,
eu obtenho coordenadas diferentes.
Tudo estaria pronto, se não
fossem estas constantes chatinhas,
então vamos colocá-las em roxo!
O que você faz com elas?
Você as divide entre
o vermelho e o azul.
Considere a raiz quadrada desses
termos e coloque-a no vermelho.
E considere a outra raiz
quadrada e coloque-a no azul.
E, agora, temos, formalmente,
dois vetores idênticos.
Um deles é uma versão transformada do x.
E o outro é uma versão
transformada do x'.
E este é o produto interno.
E ele está em um espaço de
dimensão infinita, porque
você está somando de zero até infinito.
Então, agora, este é um
núcleo muito interessante.

English: 
And this is the contribution
to the inner product by
this coordinate.
So here, I am getting this
x dash multiplied by x.
Both of them normalized by e to
the minus x squared.
So if I want to see what is the
transformation of the first guy, it
would be e to the minus x squared
multiplied by x to the k.
That's one coordinate.
And as k goes from 0 to infinity,
I get different coordinates.
I would be ready to go, except
for the annoying constants.
so let's put them in purple!
So what do you do with them?
You divide them between red and blue.
Take the square root of that
and put it in the red.
And take the other square root,
and put it in the blue.
And now, we have formally
two identical vectors.
One is a transformed version of x.
And one is a transformed
version of x dash.
And this is the inner product.
And it happens to be in infinite-dimensional
space, because you're
summing for 0 until infinity.
So now, this is a very
interesting kernel.

Portuguese: 
É chamado núcleo de função de
base radial, se isso soa familiar.
Na verdade, este é o
assunto da próxima aula.
Então, vamos analisar
este núcleo em ação.
E é muito interessante, porque
é um núcleo muito sofisticado.
Corresponde a um espaço
de dimensão infinita.
No entanto, podemos utilizá-lo calculando
uma exponencial bastante simples
para os pontos x.
Então, vamos analisá-lo em ação.
Eu vou considerar um caso
levemente não separável no espaço X.
Afinal, eu estou considerando essa
magnífica transformação não linear.
É melhor eu ter algo que não
seja linearmente separável,
para lhes mostrar os benefícios.
Mas eu estou considerando-a levemente
não separável, para estabelecer uma ideia.
Então, esta é a minha função alvo.
Então, se eu gerar pontos a partir deste
alvo, provavelmente eles não serão linearmente
separáveis, porque estas voltinhas
vão resultar em não linearidades.
E, de fato, eu vou gerar
100 pontos aleatoriamente.
E eu os obtenho aqui.
E se você considerar estes
100 pontos, realmente não há
uma reta para separá-los.
Então, agora, o que eu farei,
eu vou clarear a função alvo,
porque a função alvo fez o seu
trabalho... gerou os exemplos.

English: 
It's called the radial-basis-function
kernel, if that rings a bell.
Indeed, that's the subject
of the next lecture.
So let us look at this
kernel in action.
And it's very interesting, because it's
a very sophisticated kernel.
It corresponds to an infinite-dimensional
space.
Nonetheless, we can carry it out by
computing a fairly simple exponential
between the x points.
So let's look at it in action.
I'm going to take a slightly
non-separable case in the X space.
After all, I'm taking this glorious
nonlinear transformation.
I'd better have something which is not
linearly separable in order to show
you the goods.
But I'm taking it slightly,
in order to make a point.
So this is my target function.
So if I generate points from here, the
chances are it will not be linearly
separable, because just this wiggling
will result in that.
And indeed, I'm going to generate
100 points at random.
And I get them here.
And if you look at the 100
points, really there's no
line to separate them.
So now what I'm going to do, I'm going
to lighten the target function because
the target function did its job--
generated the examples.

Portuguese: 
Mas eu vou deixá-la, para
compará-la com a superfície
final que obteremos.
Então, eu a manterei
como uma superfície clara.
Você não pode nem mesmo
vê-la, provavelmente.
Agora é uma superfície verde.
Este é o conjunto de dados
que eu estou considerando.
Portanto, este é um caso
levemente não separável.
E, agora, eu vou transformar o X
em um espaço de dimensão infinita.
Outra pessoa que se preocupe com isso.
Tudo o que eu estou fazendo, na minha mente, eu
estou efetivamente fazendo isto ao simplesmente
calcular o núcleo, ao invés
de calcular apenas o produto
interno simples no espaço X.
E o núcleo é o núcleo que
eu obtive no último slide,
que é uma simples exponencial,
eu a calculo e obtenho a resposta.
O que acontece quando você faz isso?
Você obtém o núcleo.
Você o passa para a
programação quadrática.
E a programação quadrática lhe
retorna os vetores de suporte.
Você obtém os vetores de suporte.
Deixe-me ampliar o gráfico.
Portanto, temos duas classes.

English: 
But I'm going to leave it, in order
to compare it with the final
surface that we get.
So I'm just going to have
it as a light surface.
You can't even see it, probably.
It's now a green surface.
This is the data set
that I'm working with.
So this is a slightly
non-separable case.
And now, I'm going to transform X into
an infinite-dimensional space.
Someone else worries about that.
All I'm doing in my mind, I am
effectively doing that by just
computing the kernel instead
of just the simple inner
product in the X space.
And the kernel is the kernel I got from
the last slide, which happens to
be a simple exponential, I
compute it and get that.
What happens when you do that?
You get the kernel.
You pass it on to quadratic
programming.
And quadratic programming gives
you back the support vectors.
You get the support vectors.
Let me magnify it.
 
So we have the two classes.

English: 
And I darken the points that ended
up being support vectors.
These 1, 2, 3, 4 blue guys.
And in the red, I have 1, 2, 3, 4, 5.
I have 9 support vectors altogether.
 
Now, it's very interesting.
9 support vectors, how many points?
100 points.
Can you tell me what is the
out-of-sample error?
Can you bound it above?
Oh, it looks like it should
be less than 10%.
I have gone to an infinite-dimensional space.
You're a witness to that. Right?
I used what is effectively an infinite
number of parameters.
Completely suicidal in terms of
generalization, but hey, I get 9
support vectors.
I can claim victory.
So now, let's look at the surface
in the Z space when I
transform it back here.
Again, the Z space
is a mysterious guy.
It's a hyperplane of degree
infinity minus 1.

Portuguese: 
E eu escureci os pontos que foram
encontrados como vetores de suporte.
Estes 1, 2, 3, 4 pontos azuis.
E, no vermelho, eu tenho 1, 2, 3, 4, 5.
Eu tenho nove vetores
de suporte, no total.
Agora, isto é muito interessante.
Nove vetores de suporte, quantos pontos?
100 pontos.
Você pode me dizer qual
é o erro fora-da-amostra?
Você pode limitá-lo superiormente?
Oh, parece que ele
deve ser inferior a 10%.
Eu visitei um espaço
de dimensão infinita.
Vocês são testemunhas disso. Certo?
Eu usei o que é, efetivamente,
um número infinito de parâmetros.
Completamente suicida em termos de
generalização, mas eu obtenho nove
vetores de suporte.
Eu posso comemorar a vitória.
Então, agora, vamos analisar
a superfície no espaço Z quando
eu a transformo de volta, aqui.
Mais uma vez, o espaço
Z é um espaço misterioso.
É um hiperplano de
grau infinito menos um.

Portuguese: 
Isto é muito legal.
E, agora, eu estou tentando transformar esta
superfície para este espaço e analisá-la.
E ela é assim.
Como eu obtive isso?
Eu não fui ao espaço Z.
O que eu fiz, eu classifiquei cada ponto
do domínio e vi quando a curva variava
de -1 a +1.
Esta é a minha única ferramenta.
Mas eu posso fazer isso, porque
o núcleo é fácil de calcular.
Se eu fosse para o espaço Z, você nunca
teria ouvido falar de mim outra vez!
Portanto, esta é uma
boa forma de fazê-lo.
Você analisa a solução e
ela é realmente muito boa.
Em primeiro lugar, você não
obtém a curva verde exatamente.
Mas você pode ver porque os vetores de
suporte são chamados de vetores de suporte.
Eles estão meio que segurando a curva.
Você pode vê-los, para cima e para baixo,
para cima e para baixo, para cima e para baixo.
Isto é muito bom.
O outro ponto é que, quando
você pensa na noção de distância,
lembre-se que... isto é linearmente
separável naquele espaço.
Melhor que seja.
Nós utilizamos um espaço
de dimensão infinita.
Se você não obtiver a separabilidade
linear lá, você está realmente em apuros!

English: 
That's very nice.
And now, I'm trying to transform this
to this space and look at it.
And it looks like this.
 
How did I get that?
I didn't go to the Z space.
What I did, I classified every point on
the grid, and saw when it transforms
from -1 to +1.
That's my only tool.
But I can do it because the
kernel is easy to compute.
If I went into the Z space, you would
have never heard from me again!
So this is a good way of doing it.
You look at it, and it's
really very pretty.
First thing, you don't get
the green thing exactly.
But you can see why support vectors
are called support vectors.
They're sort of holding the guy.
You can see it up and down, up
and down, up and down.
That's pretty good.
The other thing is that, when you think
of the notion of a distance, remember
that-- this is linearly
separable in that
space. Had better be.
We've got the infinite-dimensional space.
If you don't get linearly separability
there, you are really in trouble!

English: 
And when I get the linear separability
there, I get a margin.
I try to maximize the margin.
That has already been
maximized by the machinery.
So I get a respectable margin.
And the evidence for the respectable
margin is that I do get the small
number of support vectors,
which are here. Fine.
And now, when I look at the distance,
the value of the margin, the value of
the margin is in the Z space.
I cannot see that.
But here, you can see that if you look
by the distance, these two support
vectors are awfully close
to the surface.
This support vector is not that close.
Well, maybe it will become close
when this goes to extend.
But it's definitely further away,
in the X space as we see it.
But again, this is not the margin.
These guys are pre-images
of support vectors.
They are not support vectors per se.
And the distance that was solved
for happened in the Z space.
Whatever happens here happens here.
You may end up with something,
where you get support vectors far
away, and it's like a strange thing.
Don't sweat bullets over it.
It's happening in a space that
we don't understand.

Portuguese: 
E, quando eu obtenho a separabilidade
linear lá, eu obtenho uma margem.
Eu tento maximizar a
margem. Isso já havia sido
maximizado pelo mecanismo.
Então, eu obtenho uma
margem respeitável.
E a evidência para uma margem
respeitável é que eu obtenho
um pequeno número de vetores de
suporte, que estão aqui. Ótimo.
E, agora, quando eu considero
a distância, o valor da margem,
o valor da margem está no espaço Z.
Eu não posso ver esse valor.
Mas aqui, você pode ver que, se você
olhar pela distância, estes dois vetores
de suporte estão muito
próximos da superfície.
Este vetor de suporte
não está tão próximo.
Bom, talvez ele ficará próximo
quando a curva se estender.
Mas está, definitivamente, mais
longe, no espaço X, como o vemos.
Mas, novamente, esta não é a margem.
Esses pontos são pré-imagens
de vetores de suporte.
Eles não são vetores de suporte por si.
E a distância que foi
encontrada aconteceu no espaço Z.
O que quer que ocorra aqui, ocorre aqui.
Você pode acabar com algo em
que você obtém vetores de suporte
muito distantes e parece algo estranho.
Não fique ansioso com relação à solução.
Está ocorrendo em um espaço
que nós não entendemos.

Portuguese: 
Enquanto o mecanismo para a
solução estiver correto e eu obtiver
os vetores de suporte
que possuem lambda maior
do que zero, eu posso prosseguir.
Vamos encolher esta figura novamente.
Então, nós obtemos essa solução.
E é uma ferramenta
bastante legal para se ter.
E nos perguntamos: foi um
exagero ir para um espaço
de dimensão infinita?
Sim, no início, antes
de estudamos essa teoria,
diríamos que seria um completo exagero.
Mesmo para essas duas
dimensões, é levemente aceitável.
Se você considerasse um polinômio de
quinta ordem, eu já estaria preocupado
que você estivesse
realmente indo muito longe.
Agora, você foi para um espaço infinito.
Mas, agora, nós estamos
fazendo uma pergunta diferente.
Nós estamos perguntando: verifique
o número de vetores de suporte.
Esse é o seu guia.
E essa é uma variável dentro-da-amostra
que você pode observar.
E ela lhe fornecerá a
propriedade da generalização.
Então, agora, nós estamos completamente
fascinados pela ideia dos núcleos.
Agora, vamos analisar, se eu lhe desse
um núcleo e fosse um núcleo válido,
que corresponde a um produto interno
em algum espaço Z, como você formularia
o problema?

English: 
As long as the machinery for the
solution is correct and I get the
support vectors that happen
to have lambda greater
than 0, I am in business.
Let's shrink this back.
So we get this solution.
And it's a pretty nice tool to have.
And we ask ourselves: was this
an overkill to go to an infinite
dimensional space?
 
Yes, early on before we studied
this thing, we would say
that's a complete overkill.
Even for these two dimensions,
it's slightly OK.
If you went to a 5th-order polynomial,
I would already be worried
that you're really doing too much.
Now, you went to an infinite one.
But now, we're asking
a different question.
We're asking: check the number
of support vectors.
That is your guide.
And that is an in-sample quantity
that you can observe.
And that will tell you the
generalization property.
 
So now, we are completely sold
on the idea of the kernels.
Now let's look at if I give you
a kernel, and it's a valid kernel that
corresponds to an inner product in some
Z space, how do you formulate
the problem?

English: 
This is just formality.
You already know.
But just let's take it step by step.
What do you do?
You remember quadratic programming?
Yes, I do.
And in quadratic programming,
we have this huge matrix.
This is the big Q matrix that you
pass on to the algorithm.
And you compute it in terms
of inner products.
And these were genuine inner products,
when you were working with linearly
separable data in the X space.
So now, the only thing you're going to
do is that, instead of passing this to
the quadratic programming, you're
going to pass this instead.
 
That's it.
This may not be too much
computation at all.
I can get the exponentials,
and get this number.
And now, quadratic program
is ready to go.
Absolutely nothing else.
If you look at the rest of the details,
nothing is affected by the
transformation, other than this
quadratic-programming matrix.
That's good.
Now, quadratic programming
passes you the alphas.
You need the hypothesis.
So how do I construct the hypothesis
in terms of the kernel?

Portuguese: 
Isto é apenas uma formalidade.
Você já sabe.
Mas vamos apenas
considerá-la passo a passo.
O que você faz?
Você se lembra da
programação quadrática?
Sim, eu me lembro.
E na programação quadrática,
temos esta matriz enorme.
Esta é a grande matriz Q, que
você passa para o algoritmo.
E você a calcula em termos
dos produtos internos.
E estes eram produtos internos genuínos,
quando você estava trabalhando com
dados linearmente
separáveis no espaço X.
Então, agora, a única coisa que você
vai fazer é, ao invés de passar isso
para a programação quadrática,
você vai passar isto, ao invés.
Apenas isso.
Isto não deve gerar muitos
cálculos, de uma forma geral.
Eu posso obter as exponenciais
e obter este número.
E, agora, a programação
quadrática pode ser aplicada.
Absolutamente nada mais.
Se você considerar o resto
dos detalhes, nada é afetado
pela transformação, além desta
matriz da programação quadrática.
Isto é bom.
Agora, a programação
quadrática lhe retorna os alfas.
Você precisa da hipótese.
Então, como eu posso construir
a hipótese em termos do núcleo?

Portuguese: 
Portanto, esta é a g(x),
igual a essa expressão.
Estou escrevendo-a porque
é seguro escrevê-la.
Existe um espaço Z.
Eu sei que o problema é linear lá.
E esta é a forma que eu já estava
considerando para a solução.
Agora, eu quero apenas
traduzi-la em termos do núcleo.
Eu sei que eu posso, porque gastamos
bastante tempo para perceber que
não precisamos de nada do
espaço Z além do produto interno
e o produto interno é o núcleo.
Eu quero apenas colocar
a forma explícita aqui.
Então, você quer colocar isso em
termos do núcleo de algo e algo.
E você considera o w
como sendo esta fórmula.
E você não vai encontrar
nenhum desses termos.
Eles são apenas para ilustração.
E, então, você obtém: a
g(x) seria essa expressão.
Portanto, você considerou o w, substituiu
na fórmula, calculou os produtos internos.
O produto interno é o núcleo.
Você coloca o núcleo no lugar
correto e você obterá isto.
Agora, isso é muito interessante, porque
este é o seu modelo, por assim dizer.
As máquinas de vetores
de suporte são um plural.

English: 
 
So this is g of x equals that.
I'm writing it because
it's safe to write.
There's a Z space.
I know I am linear there.
And this is the form that I've
already been solving in.
Now, I just want to translate
it in terms of the kernel.
I know that I can, because we've spent
a lot of time realizing that we don't
need anything from the Z space other
than the inner product, and the inner
product is the kernel.
I just want to put the
explicit form here.
So you want to put this in terms of
kernel of something and something.
And you take w to be this.
And you're not going to solve
for any of those.
These are just for illustration.
And then, you get: g of x
would be this fellow.
So you took this, substituted there,
you took the inner products.
The inner product is what the kernel is.
You put the kernel in place
of it, and you get that.
Now, this is very interesting because
this is your model, so to speak.
Support vector machines is a plural.

English: 
Support vector machines-- doesn't
dictate a particular model.
You choose a kernel, and it'll
give you a different model.
So if you have ever been curious, in the
middle of all of this jungle, what
is the model?
What is the hypothesis that
I'm working with?
It happens to have this
functional form.
The kernel you choose appears here.
It gets summed up with coefficients.
The coefficients happen to
be determined by alpha.
They all happen to agree
in sign with the label.
That's one of the artifacts of that,
because alphas are non-negative.
And we have plus b.
And again, plus b is the one
that we haven't solved for.
But I can solve for it
using the other one.
And I end up with this
equation for it.
Take any support vector, small m, and
you can identify it by having its
alpha being bigger than 0.
You plug it in, and you have that.
So we have the full definition
of your hypothesis.
And you get the solution in this form.
 
And this is for any support vector
which is defined by: alpha_m
greater than 0.
Now, let me make a point.

Portuguese: 
Máquinas de vetores de suporte...
elas não ditam um modelo particular.
Você escolhe um núcleo e elas
lhe darão um modelo diferente.
Então, se você ficou curioso,
no meio de toda essa confusão,
qual é o modelo?
Qual é a hipótese que
eu estou considerando?
Ela tem esta forma funcional.
O núcleo que você escolhe aparece aqui.
Ele é acrescentado de coeficientes.
Os coeficientes são
determinados pelo alfa.
Todos eles concordam
em sinal com o rótulo.
Este é um dos artifícios disto,
porque os alfas são não negativos.
E nós temos o mais b.
E, mais uma vez, o mais b
é o que nós não encontramos.
Mas eu posso encontrá-lo
usando a outra fórmula.
E eu termino com esta equação para ele.
Considere qualquer vetor de suporte,
m, e você pode identificá-lo por ter
o seu alfa maior do que zero.
Você o substitui e
você tem esta fórmula.
Portanto, temos a definição
completa da sua hipótese.
E você obtém a solução nesta forma.
E esta fórmula é para qualquer vetor
de suporte, que é definido por alfa_m
maior do que zero.
Agora, deixe-me estabelecer uma ideia.

English: 
 
The nonlinear transformation
that started support vector
machines is this guy.
So in reality, I have an infinite
dimensional nonlinear transformation.
Each of these is a coordinate
that depends fully on x.
So I end up with 1, x, x squared,
x cubed, x to the 4, and so on.
And if I'm working from an x that is
more than one-dimensional, I get x_1,
x_2 squared, x_1 x_2, whole thing.
I just avoided the labor
by using the kernel.
Nonetheless, when I got the solution,
I got this solution that made me
completely forget that
I did a nonlinear
transformation into the Z space.
I can look at this and say: what
I'm really doing is that this is my
transformation, so to speak, the K's
I have, however many of them as there
are terms here.
And each of them has a coefficient.
This would be a legitimate
way of looking at it.
The only thing to remember, and it's
very important to remember, is that

Portuguese: 
A transformação não linear
que originou as máquinas
de vetores de suporte é este termo.
Então, na realidade, eu tenho uma
transformação não linear de dimensão infinita.
Cada termo é uma coordenada
que depende totalmente do x.
Assim, eu termino com 1, x, x ao quadrado,
x ao cubo, x à quarta, e assim por diante.
E, se eu estiver considerando um x com
mais do que uma dimensão, eu obtenho x_1,
x_2 ao quadrado, x_1
x_2, todos os termos.
Eu apenas evito o
trabalho usando o núcleo.
No entanto, quando eu obtive a solução,
eu obtive esta solução que me fez
esquecer completamente que
eu fiz uma transformação
não linear para o espaço Z.
Eu posso considerar isso e dizer:
o que eu estou realmente fazendo é,
esta é a minha transformação, por assim dizer,
os K's que eu tenho, porém tantos quantos
há termos aqui.
E cada um tem um coeficiente.
Esta seria uma forma legítima
de analisar essa situação.
A única coisa para ser lembrada,
e é muito importante lembrar,

English: 
this transformation depends
on your data set.
You see this x_n?
This one doesn't.
This one, before you gave me the data
set, I decided that I'm going to use
the RBF kernel-- exponential, so I get
1, x, x squared, x cubed, x to the 4.
All of this is determined without
looking at the data set.
This transformation, in order to get
this thing, I need to know what x_n is.
But we have seen this before.
Remember the hidden layer
in neural networks?
It got a nonlinear transform
based on the data set.
So this is not foreign to us.
But this tells you why this
looks very simple.
Where is the infinite-dimensional space?
I'm only determining this.
This is the solution after all the
manipulation has been done.
And that is why it has this form.
But then, it will allow us to compare
support vector machines to other
approaches.
For example, if I put the RBF kernel
here, the one with e to the minus x

Portuguese: 
é que esta transformação
depende do seu conjunto de dados.
Você vê esse x_n?
Esta transformação não depende.
Esta aqui, antes de você me dar o conjunto
de dados, eu decidi que eu vou usar
um núcleo RBF... exponencial, então eu tenho
1, x, x ao quadrado, x ao cubo, x à quarta.
Tudo isso é determinado sem
olhar para o conjunto de dados.
Esta transformação, para obter esse
termo, eu preciso saber qual é o x_n.
Mas já estudamos isso anteriormente.
Você se lembra da camada
escondida nas redes neurais?
Ela tinha uma transformação não
linear baseada no conjunto de dados.
Assim, isso não é estranho para nós.
Mas isto lhe diz porque
isso parece tão simples.
Onde está o espaço de dimensão infinita?
Estou apenas determinando isso.
Esta é a solução, depois que
toda a manipulação foi feita.
E é por isso que tem essa forma.
Mas, então, ela nos permitirá comparar
as máquinas de vetores de suporte
com outras abordagens.
Por exemplo, se eu colocar o núcleo RBF aqui,
aquele com e elevado a menos x ao quadrado,

Portuguese: 
com a norma, eu obterei
uma forma funcional.
É completamente legítimo dizer:
deixe-me considerar as formas funcionais
daquela forma e tentar resolver o
problema do aprendizado com base nelas,
sem nunca ter ouvido falar
de vetores de suporte.
É apenas um modelo.
Deixe-me ver se eu
posso obter uma solução.
E é muito interessante passar
por este exercício e comparar
o resultado de fazê-lo desta maneira em
relação a fazê-lo pelo caminho da SVM.
Você também pode fazer
isso com uma rede neural
e outros núcleos que você tiver.
Agora, a pergunta é... eu estou
com tudo o que eu preciso aqui.
Se você me der o
núcleo, tudo está claro.
Eu posso resolvê-lo e eu
posso interpretar a solução.
E eu posso julgar a qualidade
da solução e tudo isso.
O único problema que eu tenho é que
nós não sabemos se o núcleo é válido.
Se eu improvisar, eu
digo qual é o K(x,x')
e apenas lhes forneço uma fórmula.
Toda a ideia do núcleo é que
você não visita o espaço Z.
Então, como você vai verificar que
este é um núcleo válido, ou seja,

English: 
squared with the norm, I will
get a functional form.
It is completely legitimate to say:
let me look at functional forms of
that form, and try to solve the learning
problem based on these, without
ever hearing of support vectors.
It's just a model.
Let me see if I can get a solution.
And it's very interesting to go through
this exercise, and to compare
the result of doing it this way
versus doing it the SVM route.
You can also do that for a neural
network and other
kernels that you have.
 
Now, the question is-- I am
completely ready here.
If you give me the kernel,
everything is understood.
I can solve it, and I can
interpret the solution.
And I can judge the quality of the
solution, and all of that.
The only problem I have is that we don't
know that the kernel is valid.
If I improvise, I tell you
what K of x and x dash is, and
just give you a formula.
The whole idea of the kernel is that
you don't visit the Z space.
So how are you going to verify that
this is a valid kernel, namely

English: 
an inner product in some space,
without visiting that space?
That's the question.
How do I know that Z exists
for a given kernel?
By the way, in support vector machines,
you will come up with your
own kernels.
So it's a good idea to just ask yourself,
what are the conditions to get
the kernel right?
In order to get it to be a valid kernel,
there are three approaches.
 
First approach, we have already seen.
This is by construction, conceptual
construction if not explicit
construction, like we did
with the polynomial.
We looked at it, and we realized that
there is a polynomial thing.
And although I didn't do it for the case
of Q equals 100, I realize that
there will be corresponding terms, and
I will be able to separate them.
So in my mind, that is the Z space.
And without constructing it explicitly,
I realize that the kernel
that I wrote will correspond to
an inner product in that space.
This is a very effective approach, and
the polynomial transformations are the
most famous ones there.
The other one is the one we're going to
talk about in the next slide, which

Portuguese: 
um produto interno em um
espaço, sem visitar esse espaço?
Esta é a pergunta.
Como eu sei que o Z existe
para um determinado núcleo?
À propósito, em máquinas de
vetores de suporte, você construirá
os seus próprios núcleos.
Portanto, é uma boa ideia apenas se
perguntar: quais são as condições para se obter
o núcleo corretamente?
Para verificarmos se um núcleo é
válido, existem três abordagens.
A primeira abordagem nós já estudamos.
É por construção, construção
conceitual, se não construção explícita,
como fizemos com o polinômio.
Consideramos o núcleo e percebemos
que havia uma fórmula polinomial.
E, embora eu não tenha feito para o caso
em que o Q seja igual a 100, eu percebo
que haverá termos correspondentes
e eu serei capaz de separá-los.
Então, na minha mente,
este é o espaço Z.
E, sem construí-lo explicitamente,
eu percebo que o núcleo
que eu escrevi corresponderá a
um produto interno nesse espaço.
Esta é uma abordagem muito eficaz
e as transformações polinomiais
são as mais famosas.
A outra é a que vamos
estudar no próximo slide,

English: 
is using math properties of
the kernel, something
called Mercer's condition.
So I'll talk about it.
I wish it was a practical condition.
It's a very appealing condition
theoretically.
You will find it a little bit
difficult to apply in given
situations.
The good news is that people have
applied it to a bunch of kernels, and
have declared them legitimate.
So you can pick from that catalog
without worrying about it, that these
have already been established.
It comes into play when you
want to test a new kernel.
Not an easy endeavor-- not
an impossible endeavor,
but not an easy endeavor.
The third approach is the one
I find rather interesting.
So how do you know that Z exists?
 
Who cares?
This is an approach followed by people
who say: this looks like a great
machinery you have.
You give me the kernel.
I do this.
I go to that.
So I'll just improvise a kernel,
and who cares if there is
a Z space or not?

Portuguese: 
que é usar as propriedades
matemáticas do núcleo,
algo chamado de condição de Mercer.
Assim, eu vou apresentá-la.
Eu gostaria que fosse
uma condição prática.
É uma condição muito
atraente, teoricamente.
Você achará um pouco difícil
aplicá-la em determinadas
situações.
A boa notícia é que as pessoas têm
aplicado esta condição a um monte de núcleos
e os declararam legítimos.
Assim, você pode escolher deste catálogo
sem se preocupar com esta questão, porque
estes núcleos já foram estabelecidos.
Ela aparece quando você
quiser testar um novo núcleo.
Não é um esforço fácil...
nem um esforço impossível,
mas não é uma tarefa fácil.
A terceira abordagem é a que
eu acho bastante interessante.
Então, como é que você
sabe que o Z existe?
Quem se importa?
Esta é uma abordagem seguida por
pessoas que dizem: isso parece
um grande mecanismo que você tem.
Você me dá o núcleo.
Eu faço isso.
Eu vou para lá.
Então, eu vou apenas improvisar
um núcleo e quem se importa
se há um espaço Z ou não?

English: 
I never visit it anyway.
Wait a minute!
You don't visit it, but it has to exist
for all the guarantees that I
talked about.
Quadratic programming, and you get
support vectors, and alpha greater
than 0, and the generalization, all of that
depends on the Z space being there,
and you're actually separating
the data there.
Believe it or not, there's quite
a number of people who just improvise
a kernel, apply the machinery,
and see what happens.
And sometimes they succeed.
I have my reservations, let
me put it this way!
So let's go for the mathematical
route, if you actually care,
rather than who cares!
So if you design your own kernel, and
then you want to see what happens,
here is the condition.
The following statement holds.
The kernel that you wrote down is a valid
kernel, this is, the Z space that
you're talking about actually exists,
if and only if two conditions in
conjunction are satisfied.
One is the fact that the
kernel is symmetric.

Portuguese: 
Eu nunca vou visitá-lo,
de qualquer forma.
Espere um minuto!
Você não o visita, mas ele tem
que existir para todas as garantias
que eu comentei.
A programação quadrática, e você obtém
os vetores de suporte, e alfas maiores
do que zero, e a generalização, tudo
isso depende do espaço Z estar lá,
e você estar realmente
separando os dados lá.
Acredite ou não, existe um grande
número de pessoas que apenas improvisam
um núcleo, aplicam o
mecanismo e vê o que acontece.
E, às vezes, elas obtêm sucesso.
Eu tenho as minhas reservas,
deixe-me colocar desta forma!
Então, vamos analisar a rota
matemática, se você realmente se importa,
ao invés de... quem se importa!
Então, se você projetar o seu próprio
núcleo e você quiser analisar o que acontece,
aqui está a condição.
A afirmação a seguir é válida.
O núcleo que você construiu é um
núcleo válido, isto é, o espaço Z que
você está considerando realmente
existe, se e somente se as duas condições
em conjunto são satisfeitas.
Uma delas é o fato de
que o núcleo é simétrico.

Portuguese: 
Isso deve ser bastante óbvio,
simétrico significa que o K(x,x')
é igual ao K(x',x).
Bom, isto deve ser o produto
interno no espaço Z, certo?
Então, vamos transformar
x e x' em z e z'.
Enquanto no espaço Z, certamente o produto interno de
z com z' é o mesmo que o produto interno de z' com z.
O produto interno é comutativo.
Assim, se este núcleo tiver uma
chance, é melhor que ele seja simétrico.
Portanto, esta é,
definitivamente, uma das condições.
A outra condição é que exista uma
matriz para a qual vamos exigir
uma propriedade.
E esta matriz é assim.
Semelhante à que você está passando
para a programação quadrática,
mas sem os y's. O que você faz, você
simplesmente lista o valor dos seus núcleos
em todos os pares provenientes
do seu conjunto de dados.
Portanto, se isto fosse um produto interno
genuíno e você o tivesse explicitamente,
cada um destes seria o produto interno.
Este seria z_1 transposto z_1.
Esse seria z_2 transposto z_1, etc.

English: 
That should be abundantly obvious,
symmetric being K of x and x dash
being equal to K of x dash and x.
Well, this is supposed to be the dot
product in the Z space, right?
So we're going to transform
x and x dash into z and z dash.
While in the Z space, certainly z dot z dash
is the same as z dash dot z.
Inner product is commutative.
So if this has a chance, it
had better be symmetric.
So this is definitely one
of the conditions.
The other one is that there is a matrix
that we're going to require
a property on.
And that matrix looks like this.
Similar to the one you're passing to the
quadratic programming, but without
the y's. What you do, you just list
the value of your kernels on all the
pairs coming from your data set.
So if this was a genuine inner product
and you had it explicitly, each of
these will be the inner product.
This one would be z1 transposed z1.
This would be z2 transposed
z1, et cetera.

English: 
And therefore, this thing could be
decomposed as an outer product between
z's standing and z's sitting.
And you will get that.
So the condition here on that matrix,
without visiting the z, is that when
you put these numbers, to your pleasant
surprise, this needs to be positive
semi-definite.
That is, in matrix lingo, this matrix
should be greater than or equal to 0.
That's what positive semi-definite
really means conceptually.
This should be true for any
choice of the points.
And that is Mercer's condition.
Now, we can see the difficulty.
If I want to satisfy that this is true
for any points I choose,
obviously I have to have some math
helping me to corner that this has to
be positive semi-definite
for some reason.
But this is indeed the condition.
And if you look at the case where you
know the transformation into the z and
you put this as an outer product between
a bunch of z's and a bunch of
z's, what you're going to get is
patently positive semi-definite.
Because what is positive semi-definite?

Portuguese: 
E, portanto, essa matriz poderia ser
decomposta como um produto externo
entre os z's nas colunas
e os z's nas linhas.
E você obterá isso.
Assim, a condição aqui, para esta
matriz, sem visitar o Z, é que,
quando você colocar esses números, para a sua
agradável surpresa, esta matriz precisa ser positiva
semidefinida.
Ou seja, na linguagem das matrizes, esta
matriz deve ser maior ou igual a 0.
Isso é o que positiva semidefinida
realmente significa, conceitualmente.
Isto deve ser verdadeiro para
qualquer escolha dos pontos.
E esta é a condição de Mercer.
Agora, podemos ver a dificuldade.
Se eu quiser estabelecer que isso seja
verdadeiro para todos os pontos que eu escolher,
obviamente, eu tenho que ter um pouco de matemática
para me ajudar a estabelecer que essa matriz
seja positiva semidefinida,
por algum motivo.
Mas esta é, de fato, a condição.
E se você considerar o caso no qual
você sabe a transformação ao espaço Z
e colocar essa matriz como um
produto externo entre um monte de z's
e um monte de z's, o que você obterá
será, claramente, positiva semidefinida.
Porque o que é uma matriz
positiva semidefinida?

English: 
You put a sleeping vector here and
the same vector standing here.
And you're guaranteed to get
a number greater than or equal
to 0 for any vector.
That's what positive
semi-definite means.
If you put that and the matrix happens
to be the outer product of these guys,
then the guy sleeping here gets
multiplied by z, and the other guy is
a transpose of that.
So you get a number squared, and
a number squared is always greater than
or equal to 0.
So the necessity part is obvious.
Sufficiency is a very elaborate
thing to prove.
And actually, it is proved in a fairly
elaborate integral form, not in
a particular realization.
But that is indeed the condition.
And if you manage to establish this
for any kernel, then you establish
that the Z space exists even if you
don't know what the Z space is.
 
Done with kernels.
That's half the deal.
And now, we are going to the
case where the data is
not linearly separable.
And we still insist on separating
them, with making some errors.

Portuguese: 
Você coloca um vetor aqui e
o mesmo vetor transposto aqui.
E você tem a garantia de obter
um número maior ou igual a zero
para qualquer vetor.
Isto é o que positiva
semidefinida significa.
Se você colocar esse vetor e a matriz
for o produto externo desses termos,
então o vetor fica multiplicado
por z e o outro vetor
é uma transposição do primeiro vetor.
Portanto, você obtém um número ao
quadrado e um número ao quadrado é sempre
maior ou igual a zero.
Assim, a parte da necessidade é óbvia.
A suficiência é algo muito
elaborado para provar.
E, na verdade, é provada em uma
forma completa bastante elaborada,
não em uma realização particular.
Mas esta é, de fato, a condição.
E se você conseguir estabelecê-la para
qualquer núcleo, então você estabelece
que o espaço Z existe, mesmo que
você não saiba qual é o espaço Z.
Finalizamos com os núcleos.
Esta é a metade do trabalho.
E, agora, vamos analisar
a situação em que os dados
não são linearmente separáveis.
E ainda insistimos em separá-los,
permitindo alguns erros.

Portuguese: 
E isso nos leva de volta à
velha dicotomia entre dois tipos
de não separabilidade.
Estudamos isso anteriormente.
E isso, na verdade, é o tema
desta aula, se você quiser.
Então, se os dados são não separáveis,
eles poderiam ser um pouco não separáveis,
como nesta figura, em que esses pontos são
apenas... você pode considerá-los aqui e aqui.
Estes são valores atípicos.
Eu realmente não quero ir para um
espaço não linear de alta dimensão,
para considerar apenas
esse ponto e esse ponto.
Não parece algo plausível para se fazer.
E, mesmo contando os vetores
de suporte, quando eu fizer isso
e voltar, eu teria atingido
tantos pontos que, provavelmente,
o número de vetores de
suporte seria enorme.
Portanto, neste caso, se houver um método como
o algoritmo de bolso, eu iria apenas cometer
erros nestes pontos, aceitar um
E_in que seja diferente de zero.
Mas como a generalização
seria boa, o E_out seria bom.
Ao invés de insistir em um E_in igual a
zero e depois obter um erro de generalização
enorme, porque eu usei algo
extraordinariamente complexo.
Portanto, este é o caso
levemente não linear.

English: 
And this brings us back to the old
dichotomy between two types of
non-separable.
We have seen this before.
And this actually turns out to be the
subject of this lecture, if you will.
So if the data is non-separable, that
could be slightly non-separable, like
this, where these guys are just-- you
can take them as here and here.
These are outliers.
I really don't want to go to a high-dimensional
nonlinear space in order
to just go for this guy
and go for this guy.
It doesn't look like a plausible
thing to do.
And even with counting support vectors,
by the time I do this and
come back, I would have touched on so
many points that the chances are the
number of support vectors
would be huge.
So in this case, if there's a method
like the pocket, I would just make
errors on those, accept an E_in
which is non-zero.
But since the generalization is
good, E_out would be OK.
Rather than insist on E_in being 0, and
then go for the generalization error
being huge, because I used something
inordinately complex.
So this is the slightly-case.

Portuguese: 
E, então, existe um caso
seriamente não separável,
como em: você tem essa figura.
Não é uma questão de valores atípicos.
A superfície é essa e você tem que
considerar uma transformação não linear.
Os núcleos lidam com essa situação.
As máquinas de vetores de suporte com
margem flexível lidam com essa situação.
E, em casos reais, quando você lida com
um conjunto de dados real, provavelmente
o conjunto de dados terá
aspectos de ambas as situações.
Ele terá uma não linearidade
intrínseca e, ainda, mesmo modelando
esta não linearidade, alguns pontos
chatinhos estarão lá apenas para testar
a sua capacidade de aprendizagem!
E, portanto, você estará combinando
o núcleo com as máquinas de vetores
de suporte com margem flexível em quase
todos os problemas que você confrontar.
Então, agora, vamos nos
focar nesta situação.
Estou, agora, de volta ao espaço X.
Os dados não são linearmente separáveis.

English: 
And then, there is a seriously
non-separable case,
as in: you get this.
It's not a question of outliers.
The surface is this, and you have to
go to a nonlinear transformation.
Kernels deal with this.
 
Soft-margin support vector
machines deal with this.
And in all reality, when you deal with
a practical data set, the chance are
the data set will have aspects of both.
It will have a built-in nonlinearity,
and still, even modulo that
nonlinearity, some annoying
guys are there just to test
your learning ability!
And therefore, you will be combining
the kernel with the soft-margin
support vector machines in almost all
the problems that you encounter.
Now, let's focus on this.
I'm now back to the X space.
The data is not linearly separable.

English: 
And I want to apply the support
vector machines algorithm,
notwithstanding that.
And after I do that, I'm not going to
even go through the route of: and by
the way, you can transform x into z,
and by the way, you can instead of
going to Z, you do the kernel.
You do that yourself.
I'll just do the basic case.
And you know how to extrapolate, to both
the Z and to the kernel case.
So here is the idea of an error
measure, as we had before.
I'm going to consider the
margin violation.
Let me have a picture
and talk about it.
So when you solve support vector
machines in a linearly separable case,
you maximize the margin.
And these will be the ones
that achieve the margin.
And these guys will be
interior points.
And now, we are going
to consider errors.
There are many ways for
considering errors.
I can consider the number of
points I misclassify.
We realize that it's not a good idea to
deal with the number of points that
are misclassified, because optimization
becomes completely
intractable in this case.
It's a combinatorial optimization.
And we discussed that when we talked
about perceptron and pocket.

Portuguese: 
E eu quero aplicar o algoritmo
de máquinas de vetores de suporte,
independentemente disso.
E, depois que eu fizer isso, eu
não vou nem passar pela via de:
e, à propósito, você pode transformar
o x em z e, à propósito, você pode,
ao invés de visitar o Z, você constrói
o núcleo. Você pode fazer isso sozinho.
Eu vou considerar apenas o caso básico.
E você sabe como extrapolar, tanto para
o Z quanto para a situação do núcleo.
Então, aqui está a ideia de uma medida
de erro, como construímos anteriormente.
Eu vou considerar a margem de violação.
Deixe-me ter uma figura
e analisar esta situação.
Então, quando você aplica as máquinas de vetores
de suporte a um caso linearmente separável,
você maximiza a margem.
E estes serão os pontos
que atingem a margem.
E esses pontos serão pontos interiores.
E, agora, vamos considerar erros.
Há muitas maneiras de
se considerar erros.
Eu posso considerar o número de pontos
classificados de forma incorreta.
Sabemos que não é uma boa ideia
lidar com o número de pontos
que são classificados erroneamente,
porque a otimização torna-se completamente
intratável, neste caso.
É uma otimização combinatória.
E nós discutimos isso quando estudamos
o perceptron e o algoritmo de bolso.

English: 
And we said that the problem of optimizing--
getting the absolute optimum-- in
this case, is generally NP-hard.
So we are going to have
a numerical value.
And because the margin means something
to me now-- it's not a question of
being on the right side of the line,
it's a question of how far you are
from the line-- that turned out to be
an important notion in support vector
machines, I'm going to define my error
measure based on violating the margin.
So let's see what I mean.
This point that used to be here
has violated the margin.
Now, I'm not saying that once you put
this here, the same solution will hold
or whatever.
I'm just illustrating to you what
is a violation of the margin.
And how do I quantify it.
This is just an illustration.
So this point went in.
In spite of the fact that it's correctly
classified-- yes, because
this is the line, and it's on the blue
side of the line, so to speak.
So there's no change in
terms of the label.
If I'm working with in-sample
error, nothing has changed.
But now, I am not achieving the margin
that I want for this point.

Portuguese: 
E nós dissemos que o problema de
otimizar... obter o mínimo absoluto
neste caso é, geralmente, NP difícil.
Assim, teremos um valor numérico.
E como a margem significa algo
para mim, agora... não é uma questão
de estar do lado direito da reta, é
uma questão de quão longe você está
da reta... que acabou sendo uma noção
importante em máquinas de vetores
de suporte, eu vou definir a minha medida
de erro com base na violação da margem.
Então, vamos ver o que eu quero dizer.
Este ponto, que costumava
estar aqui, violou a margem.
Agora, eu não estou dizendo que, uma vez que você
coloque esse ponto aqui, a mesma solução será válida,
ou algo assim.
Estou apenas ilustrando a você
o que é uma violação da margem.
E como eu faço para quantificá-la.
Esta é apenas uma ilustração.
Então, este ponto entrou na margem.
Apesar do fato de que ele está
corretamente classificado...
sim, porque esta é a reta e ele está
do lado azul da reta, por assim dizer.
Portanto, não há nenhuma
mudança em termos do rótulo.
Se eu estiver trabalhando com o
erro dentro-da-amostra, nada mudou.
Mas, agora, eu não estou atingindo a
margem que eu quero para este ponto.

English: 
And the amount of violation will be
decided by this displacement.
So here is what I'm going to do.
This will be the case if the margin
is satisfied for every point.
That is the canonical form we put.
And when this fails, the
margin is violated.
And I'd like to quantify that.
The way I'm going to quantify it,
I'm going to introduce a slack for
every point, potentially every point.
Hopefully, most of them will satisfy
the margin, only a few of
them will violate it.
And I'm going to say that the quantity
that used to be greater than or equal
to 1, is actually greater than
or equal to 1 minus a slack.
So this is what I will have.
The movement from here to here
resulted in the red xi.
And the slack is greater
than or equal to 0.
I'm only considering violations.
Now, I'm going to consider--
this is the condition.
And now, I'm going to penalize you
for the total violation you made.
What is the total violation?

Portuguese: 
E a violação será
decidida por este valor.
Então, aqui está o que eu farei.
Este seria o caso se a margem
fosse satisfeita para cada ponto.
Essa é a forma canônica
que consideramos.
E, quando isso falhar,
a margem será violada.
E eu gostaria de quantificar isso.
A maneira que eu vou quantificar esta
violação, eu vou introduzir uma folga
para cada ponto, potencialmente cada ponto.
Felizmente, a maioria deles vai satisfazer
a margem, apenas alguns
deles vão violá-la.
E eu direi que o valor que costumava
ser maior ou igual a um será,
na verdade, maior ou
igual a um menos uma folga.
Então, isso é o que eu terei.
O movimento daqui até aqui
resultou no ksi vermelho.
E a folga é maior ou igual a zero.
Estou considerando apenas as violações.
Agora, eu vou considerar...
esta é a condição.
E, agora, eu vou penalizá-lo pela
violação total que você fizer.
Qual é a violação total?

English: 
I'm just going to add
up these violations.
We have seen error measures before.
We know that it's largely hand-waving,
because I have something in mind.
Either I'm thinking of an optimizer, and
I want to hand something friendly
to it, or I'm thinking of something
that is analytically plausible.
This is no different.
Why did I choose this
instead of squared?
Why did I choose this instead of that?
All of these are considerations that
will come up when you see the result
of choosing this.
This is reasonable.
This does seem like violating
the margin.
This does seem like measuring
the violation of the margin.
So in the absence of further evidence
one way or the other, this is a good
error measure to have.
And then, when I plug this error measure
into what we had, things will
collapse completely back to where
we solved it already.
So this is the big advantage here.
So that is going to be
my error measure.
So now, the new optimization I'm
going to do is the following.
It used to be that I was minimizing this,
because minimizing this maximized
the margin.
That was what we did the last lecture.

Portuguese: 
Eu vou apenas somar essas violações.
Estudamos medidas de erro anteriormente.
Sabemos que são, em grande parte, construídas
por persuasão, porque eu tenho algo em mente.
Ou eu estou pensando em um otimizador
e eu quero trabalhar com algo amigável
a ele, ou eu estou pensando em algo
que seja analiticamente plausível.
Essa situação não é diferente.
Por que eu escolhi esta medida,
ao invés da medida quadrática?
Por que escolhi isto, ao invés daquilo?
Todas estas são considerações que
aparecerão quando você vir o resultado
de escolher esta medida.
Esta medida é razoável.
Essa medida se parece com
uma violação da margem.
Esta medida parece estar
medindo a violação da margem.
Assim, na ausência de evidência suplementar,
de um modo ou de outro, esta é uma boa
medida de erro para se ter.
E, então, quando eu substituir esta
medida de erro na fórmula que tínhamos,
os termos vão se colapsar completamente
de volta ao que nós já resolvemos.
Portanto, esta é a grande vantagem aqui.
Assim, esta será a minha medida de erro.
Então, agora, a nova otimização
que eu farei é a seguinte.
Eu costumava estar minimizando essa
expressão, porque minimizando-a eu maximizava
a margem.
Isso foi o que fizemos na última aula.

English: 
And now, I'm going to add an error term
that corresponds to the violation
of the margin, and it is
going to be this.
So this is the quantity that I promised
you captures the violation of
the margin.
And this is a constant that gives me the
relative importance of this term
versus this term.
This is no different from our
notion of augmented error.
In augmented error, we used to have the
in-sample performance, which I guess
would be the violation
of the margin here.
If you're violating too much, you'll
start making errors. Plus lambda
times a regularization term. This
looks pretty much like
a regularization term, like weight decay.
So this C is actually 1
over the other lambda.
But this is a standard formulation
in SVM for a good reason.
C will appear in a very nice
way in the solution.
So this is an augmented error. That
gives different weights.
If I have C close to infinity,
then what am I saying?
You'd better not violate the margins.

Portuguese: 
E, agora, eu vou adicionar um termo
de erro que corresponde à violação
da margem, e será este termo.
Portanto, este é o valor que eu
prometi a você que captura a violação
da margem.
E esta é uma constante que me dá
a importância relativa desse termo
em relação a este termo.
Isso não é diferente da
nossa noção de erro aumentado.
No erro aumentado, estávamos habituados a ter
o desempenho dentro-da-amostra, o que eu imagino
que seria a violação da margem aqui.
Se você estiver violando demais,
você começará a ter erros. Além disso,
temos lambda vezes um termo de
regularização. Isso se parece bastante com
um termo de regularização,
como o decaimento do peso.
Portanto, este C é, na verdade,
um sobre o outro lambda.
Mas esta é uma formulação
padrão em SVM por uma boa razão.
O C aparecerá de uma forma
muito interessante na solução.
Portanto, este é um erro aumentado.
O C fornece pesos diferentes.
Se eu tiver o C próximo ao infinito,
então o que eu estou dizendo?
É melhor você não violar as margens.

English: 
Because the slightest violation, you
mess up what you're minimizing.
So the end result is that you're going
to pick xi's, all of them, close to 0.
And then, the data had better
be linearly separable.
And that's what you're solving for.
So we go back to the hard margin.
If C is very, very small, then
you could be violating the
margin right and left.
So nominally, you're getting
a great margin.
But you're violating
it very frequently.
And there's a compromise here.
But that's what you're minimizing.
Subject to: this is what I had before,
and now the condition adds xi to it.
So I'm now requiring this
to be the case.
And I said that xi's are non-negative.
I'm only penalizing the violating
of the margin.
I'm not rewarding the anti-violation
of the margin.
If here's the thing, and one of the
points is there, good for it.
I'm not going to give it credit that
allows me to violate the other guys
because that's not going to help me.
So xi is non-negative.

Portuguese: 
Porque, com a menor violação, você
atrapalha o que você está minimizando.
Assim, o resultado final é que você vai
escolher os ksi's, todos eles, próximos de zero.
E, então, é bom que os dados
sejam linearmente separáveis.
E é baseado nisso que você
está encontrando uma solução.
Então, retornamos para a margem rígida.
Se o C for muito, muito pequeno,
então você pode estar violando
as margens direita e esquerda.
Então, com certeza você estará
obtendo uma grande margem.
Mas você está violando-a
muito frequentemente.
E existe um compromisso aqui.
Mas isto é o que você está minimizando.
Sujeito a: essa inequação é a que eu tinha
anteriormente e, agora, a condição é acrescida do ksi.
Então, eu estou, agora,
exigindo que este seja o caso.
E eu disse que os
ksi's são não negativos.
Eu vou apenas penalizar
a violação da margem.
Não estou recompensando
a antiviolação da margem.
Se esta é a curva e um dos
pontos estiver lá, bom para ele.
Não vou lhe dar crédito que me
permita violar os outros pontos,
porque isto não vai me ajudar.
Então, o ksi é não negativo.

English: 
And I get this condition for all
points, all N of them.
And finally, I have the range in which
I'm optimizing, which used to be this.
And now, I have the xi's being R to the
N. I guess positive, but that is
captured by the constraint.
If you look at this slide, take out the
red, and you have the problem you
already solved, the hard-margin SVM
in the linearly separable case.
So this is the added guy.
Now what we're going to do, we're
actually going to go through the
Lagrangian again, because the Lagrangian
is not that much different
from before.
So we can take it as a review.
And the good thing is that, if you thought
that the terms dropped right and left
before, wait until you see this one.
So here is the Lagrange formulation.
We have L of w, b, and alpha, and some
missing guys that will be filled.
And we have this and minus that.
So you can see that it's spread out,
because obviously I'm going to put the
new stuff in.

Portuguese: 
E eu obtenho essa condição para
todos os pontos, todos os N pontos.
E, finalmente, eu tenho o intervalo no qual
eu estou otimizando, que costumava ser este.
E, agora, eu tenho que os ksi's pertencem ao
R elevado a N. Eu imagino que sejam positivos,
mas isto é capturado pela restrição.
Se você analisar esse slide e remover a
parte vermelha, você terá o problema que
você já resolveu, a SVM com a margem
rígida, no caso linearmente separável.
Então, esse é o termo
que foi acrescentado.
Agora, o que vamos fazer,
vamos, na verdade, considerar
o Lagrangiano novamente, porque o
Lagrangiano não é muito diferente
do anterior.
Assim, podemos considerá-lo
como uma revisão.
E o bom é que, se você pensou
que muitos termos sumiram
anteriormente, espere
até ver este modelo.
Então, aqui está a
formulação de Lagrange.
Temos L de w, b e alfa e alguns
termos faltantes que serão preenchidos.
E temos este termo e menos aquele termo.
Então, você pode ver que está se espalhando
porque, obviamente, eu vou inserir
os novos termos.

Portuguese: 
O que eu coloquei aqui é exatamente o
Lagrangiano que você considerou anteriormente.
Este era o seu alvo.
Esta era a forma de
zeros da inequação...
isso significa que esse termo
menos um é maior ou igual a zero.
Você coloca esta expressão e multiplica
pelo multiplicador de Lagrange,
que é não negativo, menos porque
está na forma maior ou igual a,
e este é o Lagrangiano que resolvemos.
E terminamos com o problema de
programação quadrática que tivemos.
Então, agora, há um
novo termo, que é o ksi.
Esta é uma nova variável
que eu estou determinando.
Como ela aparece no Lagrangiano?
Bom, o alvo não é mais apenas
minimizar este termo, mas minimizar
este termo mais o outro termo,
que penaliza a violação da margem.
Então, vamos adicioná-lo.
Agora, a restrição que eu tinha costumava
ser: esta expressão é maior ou igual a 1.
Então, eu a tive como menos
um para a forma de zeros.
A nova restrição é: isto é
maior ou igual a um menos ksi.

English: 
What I put here is exactly the
Lagrangian you worked with before.
This was your target.
This was the 0 form of
the inequality--
that means this minus 1 is greater
than or equal to 0.
You put that and multiplied it by the
Lagrange multiplier, which is
non-negative, minus because it's in the
form of greater than or equal to,
and this is your Lagrangian
that we solved.
And we ended up with the quadratic
programming problem we had.
So now, there is a new
guy which is xi.
That's a new variable that
I'm determining.
How does it appear in the Lagrangian?
Well, the target is no longer just
minimizing this, but minimizing this
plus the other guy that penalizes
the violation of the margin.
So let's put that.
 
Now, the constraint that I had used to
be: this is greater than or equal to 1.
So I had it as minus 1 for the 0 form.
The new constraint is: this is greater
than or equal to 1 minus xi.

English: 
So I need to put the new constant,
and when you put, it's minus
minus, you get the plus.
So that's the complete term.
Now, the other guy is that I have
a bunch of constraints on xi itself.
I need to put them in
the Lagrangian form.
And this would be this.
Not scary at all.
xi_n is really the constraint
on xi in the 0 form.
xi is greater than or equal to 0.
So if I wanted to put it in the 0 form,
then I put xi-- that has to be
greater than or equal to 0, pretty
much like this fellow had to be
greater than or equal to 0.
I need to multiply it by a Lagrange
multiplier, a new guy.
So I call those guys beta.
And I do this for all of the
constraints, N of them.
And I have a minus because this
is in the direction greater
than or equal to.
So there's absolutely nothing
different here.
And now, I add the new Lagrange
multipliers to them,
and I get this fellow.
Now, I'm proud of this
because of a reason.

Portuguese: 
Então, eu preciso adicionar a nova
restrição e, quando você a adiciona, se torna
menos menos e você obtém o mais.
Assim, esta é a fórmula completa.
Agora, o outro termo que eu tenho é
um monte de restrições no próprio ksi.
Eu preciso colocá-las
na forma do Lagrangiano.
E isso seria isto.
Nada assustador, de forma alguma.
O ksi_n é, na verdade, a
restrição no ksi na forma de zeros.
O ksi é maior ou igual a zero.
Então, se eu quisesse colocá-lo na forma de zeros,
então eu adicionaria o ksi... o ksi tem que ser
maior ou igual a zero, exatamente
como este termo tinha que ser
maior ou igual a zero.
Eu preciso multiplicá-lo por um multiplicador
de Lagrange, um novo multiplicador.
Então, eu chamo este novo
multiplicador de beta.
E eu faço isso para todas
as restrições, N restrições.
E eu tenho um sinal de menos,
porque isto está na direção
do maior ou igual.
Portanto, não há absolutamente
nada de diferente aqui.
E, agora, eu adiciono os novos
multiplicadores de Lagrange a eles
e eu obtenho esta função.
Agora, eu estou orgulhoso
desta função por uma razão.

Portuguese: 
Os slides são tela ampla
para este curso, certo?
Eu tinha que ter uma equação que
tivesse a largura total do slide.
E, finalmente, na aula número
15, eu consegui fazer isso!
Agora, você diz: esqueça.
Isso é muito complicado.
Por favor, tenha paciência comigo,
pois os termos cairão como moscas.
Basta seguir o raciocínio
e ver onde chegaremos.
Vamos minimizar isso com respeito
ao w e ao b, que estamos acostumados
a fazer, e com relação ao ksi,
que são as nossas novas variáveis.
Minimizar... E, em seguida, vamos
maximizar com relação aos multiplicadores
de Lagrange, os alfas, que
costumávamos ter, e os betas,
que são as novas variáveis.
Então, vamos resolver
o primeiro problema.
Vamos fazer a minimização com relação
ao w, o que fizemos anteriormente.
Você consegue diferenciar
isso com relação ao w?
Eu vou obter um w aqui.
Esse termo vermelho não contribui.
Aqui, eu vou obter o
que eu costumava obter.
Esse termo não interfere.

English: 
The slides are wide-screen
for this course, right?
I had to have an equation that
takes the full width of that.
And finally, in lecture number
15, I managed to do that!
Now you say: forget it.
This is just too complicated.
Please bear with me, because terms
will be dropping like flies.
Just follow this and
see where we arrive.
We're going to minimize this with respect
to w and b, which we used to
do, and with respect to xi,
which is our new guys.
Minimize, and then we're going to
maximize with respect to the Lagrange
multipliers, the alphas which we used
to have, and the betas are the new
guys in town.
So let's do the first guy.
Let's do the minimization with respect
to w, which we did before.
Can you differentiate this
with respect to w?
I will get a w here.
This red guy doesn't contribute.
Here, I will get what I used to get.
This guy doesn't interfere.

Portuguese: 
Esse termo não desempenha um papel.
Isto é encorajador.
Eu estou, na verdade, obtendo
o que eu obtive anteriormente.
Vamos calcular a
derivada parcial para o b.
Esse termo desempenha algum papel?
Esse termo desempenha algum papel?
Esse termo fica
multiplicado pelo alfa_n.
Esse termo?
O b não aparece aqui.
Eu obtenho exatamente o
que eu obtive anteriormente.
Então, a equação final é obter
as derivadas parciais dos ksi's.
Esta é a nova variável.
Assim, você calcula a derivada parcial.
Vamos ver o que acontece.
Eu vou calculá-la uma de cada vez.
Existem N derivadas parciais.
Eu não coloquei como um gradiente,
apenas para torná-las simples.
Então, eu calculo uma de cada vez.
E eu vejo que o ksi_n é multiplicado
pelo C. O ksi_n é multiplicado pelo alfa,
com um sinal negativo.
O ksi_n é multiplicado por
um beta com um sinal negativo.
Então, se eu diferenciar com relação
ao ksi, isso é o que eu vou obter,

English: 
This guy doesn't play a role.
That's encouraging.
I am actually getting
what I got before.
Let's do partial by partial b.
 
Does this guy play any role?
Does this guy play any role?
This guy gets multiplied by here.
 
Does this guy?
b doesn't appear here.
I get exactly what I got before.
 
So the final guy is to get the
partial by partial xi's.
That's the new guy.
So you do this.
Let's see what happens.
I'll do it one at a time.
There are N of those.
I didn't put it as a gradient,
just to make it simple.
So I do it one at a time.
And I see xi_n gets multiplied by C.
xi_n gets multiplied by alpha with
a negative sign.
xi gets multiplied by a beta
with a negative sign.
So if I differentiate with respect to
xi, this is what I'm going to get,

Portuguese: 
C menos alfa menos beta,
iguale isso a zero.
Agora, isso não está garantido?
Porque, agora você está dizendo que essa
expressão é sempre zero, para qualquer n,
de 1 até N. Vamos analisar
ramificações com relação ao Lagrangiano,
quando você substitui no Lagrangiano.
Aqui, eu tenho um C. Aqui,
eu tenho um menos alfa.
Aqui, eu tenho um menos beta.
Eles são multiplicados pelo ksi.
Essa combinação é zero.
Assim, convenientemente, esse termo e esse
termo e esse termo, juntamente com beta,
são removidos.
Voltamos exatamente ao mesmo Lagrangiano
que tínhamos anteriormente, com exatamente
a mesma solução que
tínhamos anteriormente.
E o que aconteceu com o beta?
Bom, o beta fez o seu trabalho.
E nós agradecemos a ele pelo
seu grande serviço e damos adeus!
Ele se foi.
A única ramificação do beta
que temos é que, como o beta

English: 
C minus alpha minus beta.
Equate that with 0.
Now, isn't that grand?
Because now, you are saying that this
quantity is always 0 for any n
from 1 to N. Let's look at the
ramifications as far as the Lagrangian,
when you substitute in the Lagrangian.
Here, I have a C. Here,
I have a minus alpha.
Here, I have a minus beta.
These are multiplied by xi.
That combination happens to be 0.
So conveniently, this guy and this guy
and this guy, together with beta, are
dropping out.
We are back to exactly the same
Lagrangian we had before, with exactly
the same solution we had before.
And what happened to beta?
Well, beta did its service.
And we thank it for its great service,
and we bid farewell!
It's gone.
The only ramification of beta that we
have is that because beta is greater

English: 
than or equal to 0, and we have this
condition, alpha is not only greater
than or equal to 0, which it used to
be. It also cannot be bigger than C,
because if it's bigger than C, this
quantity becomes negative.
And all of a sudden, I cannot find
a legitimate beta to make this true.
So the only thing out of all of this
adventure is that we're going to
require that alpha be at most C.
Everything before, plus this added
condition, that's the whole thing.
So you get the solution.
You get this.
That's what we saw before with respect
to alpha, and beta doesn't appear.
And you have alphas being non-negative
with the added red condition. That's
the only thing which is added,
less than or equal to C.
The equality constraint is there.
The equality constraint, that is
inherited from the condition from the
previous slide, same as we did before.

Portuguese: 
é maior ou igual a zero, e temos
esta condição, o alfa não é apenas
maior ou igual a zero, o que costumava ser, ele
também não pode ser maior do que o C porque,
se ele for maior do que o C,
esse valor se torna negativo.
E, de repente, eu não consigo encontrar um beta
legítimo para fazer com que isso seja verdadeiro.
Assim, a única exigência depois
de toda essa aventura é que vamos
exigir que o alfa seja, no máximo,
o C. Toda a análise anterior,
mais esta condição
adicional, isto é tudo.
Então, você obtém a solução.
Você obtém isso.
Isto é que estudamos anteriormente com
relação ao alfa, e o beta não aparece.
E você tem que os alfas são não negativos,
com a condição vermelha adicional.
Esta é a única restrição que é
adicionada, menor ou igual a C.
A restrição de igualdade está lá.
A restrição de igualdade,
que é herdada da condição
do slide anterior, da mesma
forma que tivemos anteriormente.

English: 
And when you get the solution,
w will be this.
And w will guarantee that
you're minimizing this
plus the new objective.
So if you already wrote your routine
in order to apply support
vector machines, all you need to do now
is go to that routine, and instead
of 0 less than or equal to alpha less
than or equal to infinity, make it 0
less than or equal to alpha less than
or equal to C. And you have the soft
margin support vector machines.
That is a good bargain.
Let's look at, just very quickly,
types of support vectors.
This is the picture.
And this is the picture where you
have support vectors in the hard
margin case.
There are only two types of points here,
interior, where the margin is
greater than 1 strictly, and the boundary
guys that happen to be support vectors
where the margin is exactly 1, or at
least the quantity that corresponds to
the margin is exactly 1.
And that is all I have.

Portuguese: 
E, quando você obtiver a
solução, o w será esta fórmula.
E o w vai garantir que você
está minimizando este termo
mais o novo objetivo.
Então, se você já escreveu a sua
rotina para aplicar as máquinas
de vetores de suporte, tudo que você precisa
fazer agora é considerar essa rotina e,
ao invés de zero menor ou igual
a alfa menor ou igual a infinito,
coloque zero menor ou igual
a alfa menor ou igual a C.
E você tem as máquinas de vetores
de suporte com margem flexível.
Esse é um bom negócio.
Vamos analisar, apenas muito rapidamente,
os tipos de vetores de suporte.
Esta é a figura.
E esta é a figura em que você
tem vetores de suporte no caso
com a margem rígida.
Existem apenas dois tipos de pontos
aqui, interiores, para os quais a margem
é maior do que um, estritamente, e os pontos
da fronteira, que são os vetores de suporte,
para os quais a margem é exatamente um
ou, pelo menos, o valor que corresponde
à margem é exatamente um.
E isso é tudo o que eu tenho.

Portuguese: 
Agora, quando você tem a versão
flexível, vamos rotular esses pontos
de vetores de suporte da margem, apenas
porque haverá outros pontos que violam
a margem.
E eles serão vetores de suporte.
Eles terão multiplicadores de
Lagrange que são maiores do que um.
E, neste caso, os vetores de suporte
da margem, que costumavam ter apenas
o alfa maior do que zero, eles também serão
estritamente menores que o C. Você pode analisar
isto de forma independente,
para compreender, mas deixe-me
lhes dar uma dica aqui.
Quando o alfa atinge o C, o beta, o
multiplicador perdido, atinge o zero.
Sabemos que, quando o multiplicador de
Lagrange atinge zero, a folga correspondente
tem que ser positiva.
Essa foi uma das condições que tínhamos.
E, por causa disso, como a folga aqui
é zero, você realmente não tem o ksi.
O ksi é zero.
Você tem que estar livre do
C. Essa é a razão para isso.

English: 
Now, when you have the soft version,
we are going to label these guys
margin support vectors, just because
there will be other guys that violate
the margin.
And they will be support vectors.
They will get Lagrange multipliers
that are greater than 1.
And in this case, the margin support
vectors that used to be just alpha
greater than 0, they also happen to be
strictly less than C. You can look at
it independently in order to understand,
but let me just give you
the hint here.
When alpha hits C, beta, the
lost multiplier, hits 0.
We know when the Lagrange multiplier
hits 0, the corresponding slack has to
become positive.
That was one of the conditions we had.
And therefore, because here the slack
is 0, you actually don't have xi.
xi is 0.
You have to be clear of C. That
is the reason for it.

English: 
So this is the condition
for those guys.
And xi is 0.
And these are the guys you used to
solve in order to get the b.
These are as clean
as they used to be.
Now, we add the non-margin
support vectors.
And by those, we mean that now alpha_n
equals C. So it's positive.
They are support vectors.
Alpha_n is greater than 0.
But they happen to hit C.
And now, I have a slack.
The slack xi starts becoming positive.
And therefore, the margin is violated.
I'm less than 1.
So that's 1 minus xi,
and xi is positive.
Indeed, xi is positive in this case.
So let's look at those non-margin
support vectors, and see
what they look like.
Again, just for illustration, I'm
going to take these two points and
start making them violate the margin,
not that the new solution will be
exactly the same except that
these guys are inside.
You have to re-solve it
with C, et cetera.

Portuguese: 
Portanto, esta é a
condição para esses pontos.
E o ksi é zero.
E estes são os pontos que
você usou para obter o b.
Estes são tão simples
como costumavam ser.
Agora, nós adicionamos os vetores
de suporte que não estão na margem.
E, por estes, queremos dizer que, agora,
o alfa_n é igual ao C. Então, é positivo.
Eles são vetores de suporte.
O alfa_n é maior do que zero.
Mas eles atingem o C. E,
agora, eu tenho uma folga.
A folga ksi começa a se tornar positiva.
E, portanto, a margem é violada.
Eu sou menor do que um.
Então, isto é um menos
ksi e o ksi é positivo.
De fato, o ksi é positivo, neste caso.
Então, vamos analisar esses vetores
de suporte que não estão na margem
e ver como eles são.
Mais uma vez, apenas para ilustração,
eu vou considerar esses dois pontos
e começar a fazê-los violar a
margem, não que a nova solução
seria exatamente a mesma, exceto
que esses pontos estão no interior.
Você teria que encontrar
novamente o C, etc.

Portuguese: 
Mas eu estou apenas ilustrando,
apenas para estabelecer a ideia.
Portanto, esta é uma
forma de violar a margem.
Você violou a margem, mas você ainda
está classificando os pontos corretamente.
Estes são vetores de suporte
que não estão na margem, um tipo.
Você pode violar a margem
ainda mais e cruzá-la.
Então, agora, esses pontos
estão erroneamente classificados.
E eles ainda são vetores de
suporte que não estão na margem.
E, agora, o E_in é afetado.
E você pode ser ousado.
E você estará completamente no interior.
Enquanto você estiver violando a
margem, você será um vetor de suporte.
Não será um vetor de suporte puro, mas
um vetor de suporte, de qualquer forma.
Agora, o valor do C é um
parâmetro muito importante aqui,
pois nos diz quanta violação temos,
em relação à largura da região amarela.
E esta é um valor que será decidido
em um problema prático utilizando
a famosa validação cruzada.
Este é um ponto, um parâmetro,
que precisamos determinar.
E sempre que tivermos um parâmetro
para determinar e quisermos selecioná-lo

English: 
But I'm just illustrating, just
to show you the point.
So this is one way to
violate the margin.
You violated the margin, but you're
still classifying them correctly.
These are non-margin support
vectors, one type.
You can violate it further, and cross.
So now, these points
are misclassified.
And they are still non-margin
support vectors.
And now, the E_in is affected.
And you can go wild.
And you're just completely deep.
As long as you're violating,
you are a support vector.
Not a clean support vector, but
a support vector nonetheless.
 
Now, the value of C is a very important
parameter here because it
tells us how much violation we have,
versus the width of the yellow region.
And this is a quantity that will be
decided in a practical problem using
old-fashioned cross-validation.
This is a point, a parameter
that we need to determine.
And whenever we have one parameter to
determine, and we want to pick it

Portuguese: 
da melhor maneira, podemos
usar a validação cruzada.
Então, como você pode ver, a validação e a
validação cruzada são uma camada superior a esta.
Aqui, eu estou usando um algoritmo
bastante elaborado, que são as máquinas
de vetores de suporte e, mesmo assim, eu
ainda estou recorrendo à validação cruzada
para determinar o C.
Eu farei duas observações técnicas
rápidas e terminarei a aula aqui.
Estes são apenas detalhes práticos,
no caso deles lhe incomodarem.
Se você não os viu,
eles não vão incomodá-lo.
Aqui está a ideia.
Com a margem rígida, eu
aplico esse mecanismo.
Eu obtenho o dual, eu o passo
para a programação quadrática.
Então, eu estou me perguntando, se os dados não
forem linearmente separáveis, o que acontece?
Porque, pense nisso.
Eu nunca disse a você para verificar
se os dados são linearmente separáveis.
Eu lhes dei os dados, formulei o
problema minimize isto sujeito àquilo.
Agora, se os dados não forem
linearmente separáveis, a restrição
será impossível de satisfazer.
Não haverá nenhuma solução viável.
No entanto, isto não me impediu
de obter um dual e passá-lo para
a programação quadrática.
E, talvez, a programação quadrática
vai me retornar uma solução.

English: 
optimally, we can use
cross-validation.
So as you see, validation and
cross-validation are a layer on top of this.
Here, I'm using a very elaborate
algorithm which is support vector
machines, yet I am resorting to
cross-validation in order to
determine C.
I'll make two quick technical
remarks and end the lecture here.
These are just practical points
in case they bother you.
If you didn't see them, they are
not going to bother you.
Here is the idea.
With the hard margin, I
apply this machinery.
I get the dual, pass it
to quadratic programming.
So I'm asking myself, if the data is
not linearly separable, what gives?
Because think about it.
I never told you to check that the
data is linearly separable.
I gave you the data, formulated--
minimize this subject to that.
Now, if the data is not linearly
separable, subject to that will be
impossible to satisfy.
There will be no feasible solution.
Nonetheless, this didn't prevent me from
getting a dual and passing it to
quadratic programming.
And maybe quadratic programming
will give me back a solution.

Portuguese: 
Então, agora, eu estou
em um mundo estranho.
A principal ideia a ser percebida
é que a tradução da forma primal,
minimizar w transposto w, para a forma
dual, maximizar com respeito ao alfa
o Lagrangiano... este passo é
matematicamente válido somente se houver
uma solução viável.
As condições KKT são necessárias.
Então, elas têm que ser
satisfeitas se o ponto estiver lá.
Obviamente, se não houver nenhum ponto no domínio,
então, eu estou, agora, trabalhando basicamente
como o cara que improvisou um núcleo que
não corresponde a um espaço Z.
Sim, você pode substituí-lo
e obter uma solução.
Não há garantias lá.
Neste caso, na verdade, se você
considerar o Lagrangiano, a programação
quadrática tentará convergir
para algo no infinito.
Mas você não precisa se preocupar
com esta situação, de forma alguma.
Digamos que você tenha uma
programação quadrática com erros.
E você, inocentemente,
traduz o problema para o dual.
Você o passa para a
programação quadrática.
A programação quadrática
retorna os alfas para você.

English: 
So now, I'm in a strange world.
The key thing to realize is that the
translation from the primary form,
minimizing w transposed w, to the dual
form, maximizing with respect to alpha--
the Lagrangian-- that step is
mathematically valid only if there is
a feasible solution.
The KKT conditions are necessary.
So they have to be satisfied
if the point is there.
Obviously if there is no point in the
domain, then I'm now working pretty
much like the guy who improvised
a kernel that does not
correspond to a Z space.
Yeah, you can plug it in
and get a solution.
No guarantees there.
In this case, actually, if you go
to the Lagrangian, the quadratic
programming will try to converge to
something in infinity.
But you need not to worry
about this case at all.
Let's say that you have a buggy
quadratic programming.
And you innocently translate
the problem into the dual.
You pass on to quadratic programming.
Quadratic program passes
alphas back to you.

Portuguese: 
Agora, é impossível que, de repente,
os dados se tornaram linearmente
separáveis, certo?
Você não tem que se preocupar.
Você sempre pode verificar
se a solução separa os dados.
Você pode avaliar a solução em
cada ponto, compará-la ao rótulo.
E, quando você perceber que não está
concordando com o rótulo, você percebe
que algo está errado.
Assim, você não tem que passar
pelo problema combinatório:
isto é linearmente
separável, em primeiro lugar?
Devo executar o perceptron primeiro,
para verificar se ele converge?
Não, não, não, não.
Apenas seja preguiçoso, se você
quiser, e aplique o mecanismo.
E quando os alfas
retornarem, confira-os.
Se o problema for linearmente
separável, os resultados serão válidos.
Há uma solução viável.
A solução dual é válida e a
programação quadrática funciona.
Se não, então algo estava errado.
Provavelmente, você não chegará a este
estágio, porque a programação quadrática
vai reclamar.
Mas a programação quadrática vai reclamar
de qualquer maneira, como você pode ter
vivenciado quando você tentou.
Ela lhe diz: matriz mal condicionada, isso,
aquilo e, às vezes, você tem pequenos ajustes.
Deixe-me colocar um limite
nisso, para não permitir que entre
em uma região ruim e coisas assim.
Então, não é um pacote
computacional perfeito.

English: 
Now, it's impossible that all of
a sudden, the data became linearly
separable, right?
You don't have to worry.
You can always check if the solution
separates the data.
You can evaluate the solution on every
point, compare it with the label.
And when you realize that it's not
agreeing with the label, you realize
that something is wrong.
So you don't have to go through the
combinatorial problem: is this
linearly separable in the first place?
Should I run the perceptron first
to see if it converges before?
No, no, no, no.
Just be lazy if you want,
and go through this.
And when it comes back, check.
If it's linearly separable,
things are valid.
There is a feasible solution.
The dual solution is valid and
quadratic programming works.
If it's not, then something
went wrong.
Chances are you won't get to that stage,
because quadratic programming
will be complaining.
But quadratic programming will be
complaining anyway, as you may have
experienced when you tried it.
Tells you: ill conditioned, that, there,
and sometimes you have tweaks.
Let me put a bound on this,
in order not to make it go into
a bad region and whatnot.
So it's not a perfect package.

English: 
So this is just a reminder that we will
never be susceptible to a big
mistake, like getting a solution
when none exists.
The last point is when we transform to
the Z space, you may have noticed that
some of the transformations had
a constant coordinate, 1.
1 in our mind used to
correspond to w_0.
We made it a point at the beginning
of discussing support vectors
that there is no w_0.
We took it out and called
it b, the bias.
We treated it differently.
So now, we are working
with both w_0 and b.
Because if you have a constant,
you may not call it w_0.
But effectively, it's w_0.
It's the guy that gets multiplied
by the constant.
So what gives?
Now, I have two guys that
play the same role.
And you don't have to worry about
that. Have the Z space have 20
constant coordinates.
Don't worry about it.
Because of what?
Because when you get the solution,
all of the corresponding
weights will go to 0.
And all the bulk of the
bias will go to the b.

Portuguese: 
Portanto, este é apenas um lembrete de que
nós nunca seremos suscetíveis a um grande erro,
como a obtenção de uma solução
quando não existe nenhuma.
O último ponto é, quando transformamos
ao espaço Z, você pode ter notado que
algumas das transformações tinham
uma coordenada constante, um.
O um, em nossa mente,
costumava corresponder ao w_0.
Nós chamamos a atenção no início da
discussão sobre os vetores de suporte
que não há w_0.
Nós o removemos e o
chamamos de b, o viés.
Nós o tratamos de forma diferente.
Então, agora, estamos
trabalhando com ambos, w_0 e b.
Porque, se você tem uma constante,
você pode não a chamar de w_0 mas,
na prática, é o w_0.
É o valor que é
multiplicado pela constante.
Então, o que aconteceu?
Agora, eu tenho duas variáveis
que desempenham o mesmo papel.
E você não tem que se preocupar com
relação a isso. Suponha que o espaço Z
tenha 20 coordenadas constantes.
Não se preocupe com isso.
Por causa do quê?
Porque, quando você obtiver
a solução, todos os pesos
correspondentes vão para zero.
E a parte essencial
do viés vai para o b.

English: 
How do I know that?
Because you are charged for the size
of w_0 because it's part of w.
You are minimizing half w transposed w.
You're not charged for the size of b.
So obviously, if you want to minimize,
and you can do it with both,
everything will go to the b,
and this guy will go to 0.
So no need to worry about that.
With that, we'll stop here,
and we'll take questions
after a short break.
 
So let's start the Q&A. And
we have an in-house question.
 
STUDENT: Hi.
It seems intuitive to me that the
number of support vectors goes
linearly with the dimension of the
space that you're looking at.
For example, in an N-dimensional
Euclidean space, you need N-vectors to

Portuguese: 
Como eu sei disso?
Porque você paga um preço pelo tamanho
do w, porque as constantes são parte do w.
Você está minimizando a
metade de w transposto w.
Você não é cobrado pelo tamanho do b.
Então, obviamente, se você quiser
minimizar e você puder minimizar ambos,
tudo vai para o b e
esse termo vai para zero.
Portanto, não há necessidade
de se preocupar com isso.
Com isso, eu vou parar por aqui
e consideraremos as perguntas
depois de uma pequena pausa.
Então, vamos iniciar o Perguntas e
Respostas. E nós temos uma pergunta interna.
ESTUDANTE: Oi.
Parece intuitivo para mim que o
número de vetores de suporte varia
linearmente com a dimensão do
espaço que você está analisando.
Por exemplo, em um espaço euclidiano
de dimensão N, você precisa de N vetores

English: 
define an N-minus-1 dimensional hyperplane,
and one other to define the
thickness of the fat plane, right?
PROFESSOR: It's not that
easy, because I could get two clusters
that are far away of points, and then
two points that are +1 and -1
that are close to each other.
And in order to separate, I have
to be sandwiched here.
And then, I am guided by these guys--
I have the orientation here.
And the orientation is decided by the
two points that are around me.
So in spite of the fact that in a general
case, I will do that, I could
construct cases where it's not
linear in the dimension.
Let's put it this way.
STUDENT: So you're saying
it's less than linear?
It's better than linear?
PROFESSOR: It's better.
And obviously if it was completely
linear, and I transform it to the
infinite-dimensional space, I obviously
would be in trouble.
STUDENT: Yes, that's my aim.
PROFESSOR: Ah, so that was
that question, yes.
STUDENT: But it should go positively
with the dimension.
PROFESSOR: It's likely
to increase with

Portuguese: 
para definir um hiperplano de
dimensão N-1 e mais um para definir
a espessura do plano, certo?
PROFESSOR: Não é assim tão simples,
porque eu poderia obter dois clusters
que estão longe dos pontos e,
então, dois pontos que são +1 e -1
que estão próximos uns dos outros.
E, para separá-los, eu
teria que os comprimir aqui.
E então, eu sou guiado por estes
pontos... eu tenho a orientação aqui.
E a orientação é decidida pelos dois
pontos que estão ao redor da margem.
Por isso, apesar do fato de que, em um
caso geral, eu farei isso, eu poderia
construir casos que não
fossem lineares na dimensão.
Deixe-me colocar desta forma.
ESTUDANTE: Então, você está
dizendo que é menos do que linear?
É melhor do que linear?
PROFESSOR: É melhor.
E, obviamente, se fosse completamente
linear e eu o transformasse para
o espaço de dimensão infinita,
eu obviamente estaria em apuros.
Estudante: Sim, esta é a minha meta.
PROFESSOR: Ah, então
essa foi pergunta, sim.
ESTUDANTE: Mas deve variar
positivamente com a dimensão.
PROFESSOR: É provável que aumente

Portuguese: 
com o aumento da dimensão.
E a forma exata depende do conjunto
de dados e depende da posição
do conjunto de dados,
incluindo os pontos interiores.
Deixe-me colocar desta forma.
Se eu lhe der, mesmo sem
considerar os pontos interiores.
Digamos que eu lhe forneça
dois pontos, um +1 e um -1.
Existe um plano ótimo de separação.
E quantos vetores de
suporte eu vou obter?
Eu não posso obter mais do que dois, porque
eu só tenho dois, mesmo se eu for para
um espaço de dimensão 100.
Assim, a linearidade é uma impressão
que requer outras suposições.
Mas, em geral, não vai acontecer.
Estudante: Sim e, por exemplo, o núcleo
RBF, pode, na sua forma, ele parece
ter dimensão infinita.
Mas, na realidade, eu acho que a
sua dimensão efetiva é muito pequena,
pois os termos de ordem
superior decaem muito rápido.
Decai com ambos, um termo
exponencial e um termo fatorial...

English: 
the increasing dimension.
And the exact form depends on the data
set, and depends on the position of the
data set, including the
interior points.
 
Let me put it this way.
If I give you, even without considering
the interior points.
Let's say I give you two points,
one +1 and one -1.
There is an optimal separating plane.
And how many support vectors
am I going to get?
I cannot get more than two because I
only have two, even if I go to 100
dimension space.
So the linearity is an impression that
requires further assumptions.
But in general, it will not hold.
STUDENT: Yes and for example, the RBF
kernel, it may in its form look like
infinite-dimensional.
But in reality, I think its effective
dimension is very small because the
higher-order terms decay very fast.
So with both an exponential term
and a factorial term--

Portuguese: 
PROFESSOR: Concordo plenamente
e, na verdade, isso o afeta porque
você está, na verdade, medindo uma distância
apropriada, uma distância euclidiana apropriada
nesse espaço.
Então, se uma dimensão é muito
pequena, então ela não afeta muito.
Pode ser realmente dimensão infinita
ou dimensão infinita disfarçada.
Em geral, quando você tem um espaço
de dimensão infinita, a única maneira
de realmente definir um produto
interno é ter um termo que decaia
de forma que a expressão convirja.
Então, isso é essencial
quando você quer calcular isso.
ESTUDANTE: Então, ele não converge,
então você mudou o sinal negativo
no núcleo RBF para sinais positivos?
Então, não seria um núcleo válido.
PROFESSOR: Mas o produto interno
agora não está bem definido, certo?
Estudante: Então, não seria um núcleo válido,
e você obteria um resultado horrível...
PROFESSOR: Sim, porque em um núcleo
válido, eu tenho que ser capaz
de avaliar o produto interno.
E a falta de convergência
não permitiria isso, certo?
ESTUDANTE: Sim, OK, obrigado.
PROFESSOR: Absolutamente.
MODERADOR: As pessoas estão curiosas.

English: 
PROFESSOR: Completely agree, and
indeed that affects it because you
are actually measuring a distance
proper, a Euclidean distance proper in
that space.
So if a dimension is very small, then
it doesn't affect it very much.
 
Whether it's really infinite dimension
or infinite dimension in disguise.
In general, when you have an infinite-dimensional
space, the only way to
really define an inner product
is to have a decaying term so
that the thing converges.
So this is essential when
you want to compute it.
STUDENT: So it doesn't converge, so
you changed the negative sign in the
RBF kernel into positive signs?
Then, it won't be a valid kernel.
PROFESSOR: But the inner product now
is not well defined, right?
STUDENT: So it won't be a valid
kernel, and you'll get horrible--
PROFESSOR: Yeah, because a valid
kernel, I have to be able to
evaluate the inner product.
And lack of convergence would
not allow that, right?
STUDENT: Yeah, OK, thanks.
PROFESSOR: Absolutely.
 
MODERATOR: People are curious.

English: 
How can you generalize SVM's
to a regression case?
PROFESSOR: There's a huge body of
knowledge for generalizing it.
And I didn't touch on
it for two reasons.
Again pretty much like when I did the
VC analysis, it's more technical.
And I get the basic concept without
having to go through the technicality.
The other aspect is that the major
success of support vector machines is
really in classification.
They're not as successful, competitively,
in regression.
That's the practical experience.
So I have found that it's not worth the
amount of time to go into that.
MODERATOR: So is it safe to assume,
then, that if you do the
transformation to an infinite-dimensional
space, the data will be
linearly separable there?
PROFESSOR: It is
safe but not certain.
I can create situations that
are opposed to that.
But again, this is one of the reasons
why I made the final remarks there.
Because let's say that I took my data
and applied RBF, I needn't know

Portuguese: 
Como você pode generalizar as
SVM's para um caso de regressão?
PROFESSOR: Existe um enorme conjunto
de conceitos para generalizá-lo.
E eu não os mencionei por duas razões.
Mais uma vez, da mesma forma como quando
eu fiz a análise VC, é mais técnico.
E eu obtenho o conceito básico sem
ter que passar pela tecnicalidade.
O outro aspecto é que o grande sucesso
de máquinas de vetores de suporte
é realmente em classificação.
Elas são não tão bem-sucedidas,
de forma competitiva, em regressão.
Isto é o que acontece na prática.
Então, eu percebi que não valia a pena
gastar tempo para entrar em detalhes.
MODERADOR: Assim, é seguro
supor, então, que se você fizer
a transformação para um espaço de
dimensão infinita, os dados serão
linearmente separáveis lá?
PROFESSOR: É seguro, mas não é certo.
Eu posso criar situações
que se opõem a isso.
Mas, novamente, esta é uma das razões pela
qual eu apresentei as considerações finais.
Porque, digamos que eu peguei os meus
dados e apliquei RBF, eu realmente não sabia

English: 
whether they would be linearly separable
in that space or not.
I just apply the machinery, but I can
always find the solution back and see
if the points are classified
correctly.
MODERATOR: So a technical question
on the quadratic programming.
Usually, if the matrix you give is
not positive definite, there will be
complaints by the--
or there would not be complaints
in particular?
PROFESSOR: My experience with quadratic
programming, there are tons
of packages there.
So I'm describing a subset of them
necessarily, the ones I tried.
They tend to complain.
And it's almost like when you use MatLab
and it tells you-- please get me
the inverse.
And it tells you the condition
number is bad, and so on.
So in most of the cases, even with the
complaints, the solution is fine.
It just has a certain reliability
that it has to have in
order not to complain.
So invariably, when you use quadratic
programming, there will be a complaint
one way or another.

Portuguese: 
se eles seriam linearmente
separáveis naquele espaço ou não.
Eu apenas apliquei o mecanismo, mas eu
sempre posso encontrar o que solução retorna
e ver se os pontos estão
classificados corretamente.
MODERADOR: Então, uma questão técnica
sobre a programação quadrática.
Geralmente, se a matriz que você
passar não for positiva definida,
haverá reclamações pela...
ou não haveria reclamações específicas?
PROFESSOR: Minha experiência com a
programação quadrática, há toneladas
de pacotes disponíveis.
Então eu estou descrevendo um subconjunto
deles, necessariamente, os que eu tentei.
Eles tendem a reclamar.
E é quase como quando você usa
MATLAB e ele lhe diz... por favor,
me dê a inversa.
E ele lhe diz que o condicionamento
numérico é ruim, e assim por diante.
Assim, na maioria dos casos, mesmo
com as reclamações, a solução é boa.
Ela apenas tem um certo grau
de confiança que ela tem que ter
para não reclamar.
Então, invariavelmente, quando você usa
programação quadrática, haverá uma reclamação
de uma forma ou de outra.

English: 
But I have learned not to be completely
discouraged by that, and
tweak, limit variables, and whatnot.
But this is just completely
a practical situation,
depending on the package.
MODERATOR: Going back to
a previous question.
So when you said safe but not certain,
so does that mean just in very
degenerate cases, or--?
PROFESSOR: With a real data set
that is not completely
ridiculous, I have never
seen it happen.
In some sense, you can have--
especially with the radial basis function,
you can have one on top of each point,
so you can separate whatever is there.
So I have not encountered it.
 
MODERATOR: Another question.
Is it possible to combine kernels to
produce new, different kernels?
How useful is it to do
these kind of things?
PROFESSOR: You can do it as long
as the combination is legitimate,
that it maintains that there
is a Z space in which
this is an inner product.

Portuguese: 
Mas eu aprendi a não ficar
completamente desanimado por causa disso,
e ajustar, limitar as
variáveis, e outros artifícios.
Mas isto só acontece
em uma situação prática,
dependendo do pacote.
MODERADOR: Voltando a
uma pergunta anterior.
Então, quando você disse seguro,
mas não certo, isso significa apenas
em casos muito degenerados, ou...?
PROFESSOR: Com um conjunto de dados
reais, isto não é completamente
ridículo, eu nunca vi isso acontecer.
Em certo sentido, você pode ter...
especialmente com a função de base radial,
você pode ter uma em cima de cada ponto,
assim você pode separar
o que quer que esteja lá.
Então, eu nunca confrontei isso.
MODERADOR: Outra pergunta.
É possível combinar núcleos para
produzir novos, diferentes núcleos?
Quão útil é fazer esse tipo de truque?
PROFESSOR: Você pode fazê-lo, desde
que a combinação seja legítima,
que mantenha que exista
um espaço Z no qual
isto seja um produto interno.

English: 
That's really the requirement.
If you have that, then there are many
variations of the methods, the basic
SVM method that are in the literature.
People tried several things.
And as long as what you're doing is
legitimate, so that you have the
generalization guarantees
of SVM, it can be done.
MODERATOR: Since we're only talking
about inner products and they
usually induce a norm, are we always
preferring the Euclidean norm, or can
it still be changed and still
use inner products?
PROFESSOR: The way I derived
it is based on Euclidean norm and
straightforward inner product.
There are obviously variations of that
that you can get, and still have the
machinery go through with
modified quantities.
So it's not impossible.
But you just need to make sure that
the quadratic programming problem
you're solving corresponds to the
version of the norm that you used and
the version of the inner
product that you used.

Portuguese: 
Esta é realmente a exigência.
Se você tiver isso, então há muitas
variações dos métodos, o método
básico da SVM que está na literatura.
As pessoas tentaram várias coisas.
E, enquanto o que você estiver fazendo
for legítimo, de modo que você tenha
as garantias de generalização
da SVM, isso pode ser feito.
MODERADOR: Como estamos falando
apenas de produtos internos
e eles normalmente induzem uma norma,
estamos sempre preferindo a norma euclidiana,
ou ela ainda pode ser alterada e
ainda usarmos produtos internos?
PROFESSOR: A maneira que eu derivei
se baseia na norma euclidiana
e no produto interno simples.
Existem, obviamente, variações
disso que você pode obter e ainda ter
o mecanismo válido com
quantidades modificadas.
Então, não é impossível.
Mas você precisa apenas ter certeza de
que o problema de programação quadrática
que você está resolvendo corresponde
à versão da norma que você usou
e a versão do produto
interno que você usou.

Portuguese: 
MODERADOR: Qual você diria que é a
dimensão dos problemas que podem ser
resolvidos por SVM's, com
relação ao número de pontos?
PROFESSOR: A escala de problemas
que podem ser resolvidos
pela programação quadrática
é uma questão mais importante,
pois este é o gargalo.
Depende se você está usando MATLAB
em relação a algum outro programa,
eles ficam saturados
em diferentes fases.
Eu diria que se você chegasse a
10.000 pontos, isto seria formidável.
E se você está abaixo de
1.000, você deve estar bem.
Mas alguns pacotes ainda
vão lhe trazer complicações.
Há pacotes especificamente
para SVM que usam heurísticas.
Então, eles não passam especificamente
os dados para a programação quadrática
diretamente, mas tentam quebrá-los em pedaços,
obter vetores de suporte para cada caso e,
em seguida, obter a
união, e assim por diante,
os métodos hierárquicos
e outros métodos.
Então, eles são basicamente métodos
heurísticos para resolver a SVM
quando a programação
quadrática simples vai falhar.

English: 
MODERATOR: What would you say is the
scale of the problems that can be
solved by SVM's, in the number
of points?
PROFESSOR: The scale of problems
that can be solved by
quadratic programming is a more pointed
question, because that's the
bottleneck.
It depends on if you're using MatLab
versus something else, they get
saturated at different stages.
I would say if you get to 10,000 points,
that's pretty formidable.
And if you're below 1000,
you should be OK.
But some packages will still
give you a hard time.
There are packages specifically
for SVM that use heuristics.
So they don't specifically pass on the
thing to quadratic programming
directly, but try to break it into
pieces, get support vectors for each
case, and then get the union
and so on, the hierarchical
methods and other methods.
So they are basically heuristic
methods for solving SVM when
straightforward quadratic
programming will fail.

English: 
And these are also available, and should
be used when you have too many
data points.
 
MODERATOR: I think that's it.
PROFESSOR: Very good.
We'll see you on Thursday.
 

Portuguese: 
E estes também estão disponíveis
e devem ser usados quando você tem
muitos dados.
MODERADOR: Eu acho que é isso.
PROFESSOR: Muito bom.
Nós vemos na próxima aula.
