
Portuguese: 
Da última vez construímos uma rede neural em python que fazia predições bem ruins de seu resultado em uma prova.
Baseado em quantas horas você dormiu e quantas horas você estudou na noite anterior.
Desta vez vamos focar na teoria de tornar essas predições melhores.
Podemos inicializar a rede que construímos da última vez e passar nossos dados normalizados x.
Usando nosso método forward e dar uma olhada na nossa estimativa de y, y chapéu.
Até agora nossa predições são bem imprecisas.
Para melhorar nosso modelo, primeiro precisamos quantificar exatamente o quão ruim nossas predições são.
Faremos isso com uma função custo.
A função custo nos permite expressar exatamente o quão errado ou custoso nosso modelo é, dados nossos exemplos.
Uma forma de computar um custo total é tomar o valor de cada erro, elevá-lo ao quadrado, e somar todos esse valores.
Multiplicar por um meio deixará as coisas mais simples futuramente.
Agora que temos um custo, nosso trabalho é minimizá-lo,

English: 
Last time we built a neural network in python that made really bad predictions of your score on a test
Based on how many hours you slept and how many hours you studied the night before?
This time we'll focus on the theory of making those predictions better
we can initialize the network we built last time and pass in our normalized Data x
Using our forward method and have a look at our estimate of y y hat
Right now our predictions are pretty inaccurate to improve our model
we first need to quantify exactly how wrong our predictions are well do this with a cost function a
Cost function allows us to Express exactly how wrong or costly our model is given our examples
One way to compute an overall cost is to take each error value square it and add these values together
Multiplying by one half will make things simpler down the road
now that we have a cost our job is to minimize it and

Italian: 
 
 
L'ultima volta abbiamo costruito una rete neurale in Python
che restituiva delle previsioni molto sbagliate del risultato di un test
basandosi su quante ore hai dormito e quante ore hai studiato la sera prima
Questa volta ci focalizzeremo sulla teoria necessaria a migliorare queste previsioni
Possiamo inizializzare la rete costruita nello scorso video
e passargli i nostri dati normalizzati X usando il metodo "forward"
per guardare la nostra stima di y, chiamata "yHat"
Attualmente le nostre previsioni sono molto inaccurate
Per migliorare il nostro modello dobbiamo prima quantificare quanto sono inaccurate le nostre previsioni
Lo faremo con una funzione di costo
Una funzione di costo ci permette di quantificare esattamente quanto sbagliato (o "costoso")
sia il nostro modello, a partire dai dati d'esempio
Un modo per calcolare il costo totale e' dato dal predere ogni singolo errore,
calcolarne il quadrato e sommare tutti i valori insieme
Moltiplicare per 1/2 ci aiutera' a semplicare i calcoli
Ora che abbiamo un costo, il nostro lavoro e' di minimizzarlo.

Spanish: 
La última vez construimos una red neuronal en Python que hizo muy malas predicciones de su puntaje en una prueba
Basado en el número de horas que durmió y el número de horas que estudió la noche anterior
Esta vez nos centraremos en la teoría para mejorar estas predicciones
podemos inicializar la red que construimos la última vez y pasarle los datos normalizados X
Usando nuestro método directo y echar un vistazo a nuestra estimación de y, yHat
En este momento nuestras predicciones son bastante imprecisas, para mejorar nuestro modelo
primero tenemos que cuantificar exactamente cuan equivocadas son nuestras predicciones, lo haremos con una función de costo
Una función de costos nos permite expresar exactamente cuan mal o que tan costoso es nuestro modelo dado nuestros ejemplos
Una forma de calcular un costo global es tomar cada valor del error, elevarlo al cuadrado y sumar estos valores
Multiplicar todo por un medio hará las cosas más simples en el camino
ahora que tenemos el costo, nuestro trabajo es minimizarlo

Portuguese: 
quando dizem que estão treinando um rede, o que realmente querem dizer é que estão minimizando uma função custo.
Nosso custo é uma função de duas coisas:
Nossos exemplos e o peso de nossas sinapses.
Não temos muito controle sobre nossos dados. Então minimizaremos nosso custo mudando os pesos.
Conceitualmente, isso é um conceito bem simples. Temos uma coleção de nove pesos individuais,
e estamos dizendo que existe uma combinação de W's que tornarão nosso custo J o menor possível.
Quando vi esse problema pela primeira vez em aprendizado de máquina, pensei:
Vou apenas tentar todos os pesos até achar o melhor. Afinal, eu tenho um computador.
Entre na maldição da dimensionalidade.
Aqui está o problema: vamos fingir por um tempo que temos apenas um peso, ao invés de nove.
Para encontrar o valor ideal para nosso peso que diminuirá o custo,
precisamos tentar um monte de valores para w. Digamos que testamos mil valores.
Isso não parece muito ruim. Afinal, meu computador é muito rápido.
Leva cerca de 0,4 segundos para checar os mil valores de peso diferentes para nossa rede neural.

Italian: 
Alcuni lo chiamano "training", quello che intendono e' che stanno minimizzando la funzione di costo
Il costo e' in funzione di due cose:
I dati d'esempio e i pesi delle sinapsi
Non abbiamo molto controllo sui dati, quindi minimizziamo il costo cambiando i pesi
Concettualmente e' molto semplice
abbiamo una collezione di 9 pesi individuali
e vogliamo trovare una combinazione dei pesi W che renda il costo J piu' piccolo possibile
La prima volta che ho visto questo problema in Machine Learning ho pensato
"provero' tutte le combinazioni possibili di pesi finche' non trovo la migliore
"in fondo, ho un computer..."
benvenuti nella "maledizione delle dimensionalità"
Ecco il problema:
Supponiamo per un secondo di avere un solo peso anzichè 9
per trovare il valore ideale del peso che minimizzi il costo
dobbiamo provare una serie di valori per W
diciamo di provare 1000 valori diversi
non sembra male, in fondo il mio computer è abbastanza veloce
ci vogliono circa 0.04 secondi per provare 1000 valori per la nostra rete neurale

English: 
someone says they're training a network what they really mean is that they're minimizing a cost function
Our cost is a function of two things
Our examples, and the weights on our synapses
We don't have much control over our data. So will minimize our cost by changing the weights
Conceptually this is a pretty simple concept, we have a collection of nine individual weights.
And we're saying that there is some combination of w's that will make our cost, j, as small as possible.
When I first saw this problem in Machine learning
I thought I'll just try all the weights until I find the best one after all I have a computer
enter the curse of dimensionality
Here's the problem let's pretend for a second that we only have one weight instead of nine
To find the ideal value for our weight that will minimize our cost
We need to try a bunch of values for w let's say we test a thousand values
That doesn't seem so bad; After all, my computer is pretty fast
It takes about point zero four seconds to check a thousand different weight values for our neural Network

Spanish: 
cuando alguien dice que está entrenando una red lo que realmente quieren decir es que está minimizando una función de costo
Nuestro costo es una función de dos cosas
Nuestros ejemplos, y los pesos en nuestras sinapsis
No tenemos mucho control sobre nuestros datos. Así que reduciremos nuestro costo cambiando los pesos
Conceptualmente es un concepto bastante simple, tenemos una colección de nueve pesos.
Y decimos que hay alguna combinación de W que hará que nuestro costo, j, lo más pequeño posible.
Cuando vi por primera vez este problema en aprendizaje de máquinas
Pensé, voy a intentar con todos los pesos hasta que encuentre el mejor, después de todo, yo tengo un ordenador
enfrenté la maldición de la dimensionalidad
Aquí está el problema, vamos a suponer por un momento que sólo tenemos un peso en lugar de nueve
Para encontrar el valor ideal para nuestro peso el cual reduzca al mínimo nuestros costos
Tenemos que probar un montón de valores para w, digamos que probamos un millar de valores
Eso no parece tan malo; Después de todo, mi computador es bastante rápido
Se tarda aproximadamente 0.04 segundos para comprobar un millar de diferentes valores para nuestra red neuronal

English: 
Since we've competed the cost for a wide range of values of w we can just pick the one with the smallest cost
Let that be our weight, and now we've trained our network
So you may be thinking that point zero four seconds the trainer network is not so bad
And we haven't even optimized anything yet. Plus, there are other way faster languages than python out there
Before we optimize though, let's consider the full complexity of the problem
Remember the point zero four seconds required is only for one weight, and we have nine total
Let's next consider two weights for a moment, to maintain the same precision
We now need to check 1,000 times a thousand or a million values. This is a lot of work even for a fast computer.
After our million evaluations we found our solution
But it took an agonizing 40 seconds the real curse of dimensionality kicks in as we continue to add dimensions
Searching through three weights would take a billion evaluations or 11 hours searching through all nine weights

Italian: 
siccome abbiamo trovato il costo per un gran numero di valori di W
possiamo semplicemente prendere quello con il costo minore ed usarlo come peso
ed abbiamo istruito la nostra rete
potresti quindi pensare che 0.04 secondi per istruire una rete neurale non sono cosi male
e non abbiamo ancora ottimizzato nulla!
inoltre ci sono molti altri linguaggi più veloci di Python
Ma prima di ottimizzare il codice, consideriamo la complessità dell'intero problema
Ricorda che 0.04sec sono necessari per un solo peso, e ne abbiamo 9 in totale
Proviamo adesso a considerarne solo due
Per mantenere la stessa precisione dobbiamo ora controllare 1000 più valori di prima, ovvero un milione di valori
Questo è un sacco di lavoro anche per un computer molto veloce
Dopo una lunga analisi, abbiamo trovato la soluzione ma ci son voluti ben 41 secondi
Il problema della dimensionalità continua a crear problemi quando aggiungiamo dimensioni
Per provare 3 pesi servono 1 miliardo di prove, ovvero circa 11 ore di esecuzione

Spanish: 
Ahora que hemos computado el costo para una amplia gama de valores de w, podemos elegir el que tenga el menor costo
definir nuestro peso, y ahora hemos entrenado a nuestra red
Así que usted puede estar pensando que 0.04 segundos, para entrenar una red no es tan malo
Y ni siquiera hemos optimizado nada todavía. Además, hay un montón de otros lenguajes más rápidos que Python por ahí
Sin embargo antes de optimizar, consideremos la complejidad total del problema
Recuerde que los 0.04 segundos requeridos es sólo para un peso, y tenemos nueve en total
Ahora consideremos dos pesos por un momento, para mantener la misma precisión
Ahora tenemos que comprobar 1.000 veces 1.000 o un millón de valores. Esto es mucho trabajo, incluso para un equipo rápido.
Después de un millón de evaluaciones encontramos nuestra solución
Pero tuvieron que pasar agonizantes 40 segundos, ataca la verdadera maldición de la dimensionalidad a medida que seguimos añadiendo dimensiones
Buscando para tres pesos tomaría mil millones de evaluaciones o 11 horas, buscando a través de los nueve pesos

Portuguese: 
Desde que competimos o custo para uma ampla variedade de valores de W, podemos apenas escolher o de menor custo.
Deixe isso ser nosso peso, e agora nós treinamos nossa rede.
Então você deve estar pensando que 0,4 segundos para treinar a rede não é tão ruim.
E nós nem sequer otimizamos nada ainda. Além disso, há várias outras linguagens mais rápidas que python.
Antes de otimizar isso, vamos considerar a complexidade completa do problema.
Lembre-se que os 0,4 segundos requeridos são para apenas um peso, e nós temos nove no total.
Vamos em seguida considerar dois pesos por um momento. Para manter a mesma precisão,
agora precisamos checar mil vezes mil ou um milhão de valores. Isso é bastante trabalho até mesmo para um computador rápido.
Depois de um milhão de avaliações encontramos nossa solução.
Mas isso tomou 40 segundos agonizantes. A real maldição da dimensionalidade surge à medida que continuamos a adicionar dimensões.
Buscando em três pesos tomaria um bilhão de avaliações ou 11 horas.

Spanish: 
que necesitamos para nuestra simple red neuronal tomaría un cuatrillón
268 391 000 000 000 billones
679.350.000, quinientos ochenta y tres años y medio
Por esa razón, intentar todo o mediante el método de optimización de fuerza bruta es evidente que no va a funcionar
Volvamos al caso unidimensional y veamos si podemos ser más inteligentes
Evaluemos nuestra función de costo para un valor específico valor de w, si w es 1.1, por ejemplo,
Podemos correr nuestra función de costo y ver que J es 2.8
No hemos aprendido mucho todavía, pero vamos a tratar de añadir un poco más de información a lo que ya sabemos
¿Y si pudiéramos averiguar en qué dirección es cuesta abajo? Si pudiéramos, sabríamos si hacer w más pequeño o más grande
para disminuir el costo
Podríamos probar la función de costo inmediatamente a la izquierda ya la derecha de nuestro punto de prueba y ver que cuál es más pequeña
Esto se llama estimación numérica y es a veces un buen acercamiento, pero para nosotros hay una manera mejor

Portuguese: 
Buscando em todos os nove pesos que precisamos para nossa simples rede neural tomaria 1.268.391.679.350.583,5 anos
Por conta disso, apenas tentar tudo o ou método de otimização força bruta claramente não funcionará.
Vamos voltar para o caso unidimensional e ver se podemos ser mais espertos.
Vamos avaliar nossa função de custo para um valor específico de W.
Se W é 1,1 por exemplo, podemos executar nossa função de custo e ver que J é 2,8.
Não aprendemos muito ainda, mas vamos tentar adicionar um pouco mais de informação para o que nós já sabemos.
E se nós conseguíssemos descobrir que caminho é descida?
Se pudéssemos, nós saberíamos fazer W menor ou maior para diminuir o custo.
Poderíamos testar a função custo imediatamente para a esquerda e direita do nosso ponto de teste para ver qual é menor.
Isso é chamado de estimação numérica e algumas vezes é uma boa abordagem, mas para nós há uma forma melhor.

Italian: 
Per ottimizzare tutti e 9 i pesi della nostra semplice rete neurale servono 12.683.916 miliardi di anni
Per questo motivo, semplicemente provare tutti i valori non può funzionare
Torniamo al caso di un solo peso e vediamo se possiamo essere più intelligenti
Calcoliamo il valore della funzione costo per un singolo valore di W
con W=1.1, ad esempio, possiamo calcolare la funzione costo e vedere che vale circa J = 2.81
Non abbiamo ancora imparato molto...
ma proviamo ad aggiungere ancora un pò di informazione a ciò che già sappiamo
E se potessimo capire in che direzione il costo diminuisce?
se lo sapessimo, sapremmo se dobbiamo aumentare o diminuire W per ridurre il costo
possiamo ad esempio testare immediatamente prima e dopo del valore W di test
e vedere qual'è minore
questa è chiamata stima numerica, ed a volte funziona molto bene
ma per noi esiste un metodo migliore

English: 
We need for our simple Neural Network would take one quadrillion
268 Trillion 391 billion
679 million three hundred and fifty thousand five hundred and eighty three and a half years
For that reason that just try everything or brute Force optimization method is clearly not going to work
Let's return to the one-dimensional case and see if we can be more clever
Let's evaluate our cost function for a specific value of w if w is 1.1 for example
We can run our cost function and see that J is 2.8
We haven't learned much yet, but let's try to add a little more information to what we [already] know
What if we could figure out which way was downhill if we could we would know whether to make w smaller or larger to?
Decrease the cost
We could test the cost function immediately to the left and to the right of our test point and see which is smaller
This is called numerical estimation and is sometimes a good approach but for us there is a better way

English: 
Let's look at our equation so far
we have five equations, but we could really think of them as one big approach and
since we have one big equation that uniquely Determines our cost J from x y w1 and W2
We can [use] our good friend calculus to find exactly what looking for
We want to know which way is downhill that is what is the rate of change of J with respect to w?
Also known as the derivative and in this case since we're just considering one weight at a time. This is a partial derivative
We can derive an expression for DJ 2w
That will give us the rate of change of J with respect to w for any value of w if DJ
Dw is positive then the cost function is going uphill if Dj. Dw is negative and the cost function is going Downhill now
We can really speed things up since we [know] in which direction the cost decreases
We can save all the time that we would have spent searching in the wrong direction

Italian: 
Guardiamo alle nostre equazioni fin ora
abbiamo 5 equazioni, ma possiamo pensarle come un unica grande equazione
e siccome abbiamo un unica equazione che determina il nostro costo J
partendo da X, y, W1 e W2
Possiamo usare l'analisi matematica per aiutarci
Vogliamo sapere in che direzione il costo diminuisce
ovvero vogliamo sapere quanto cambia J se cambio un pò W
anche nota come derivata (di J rispetto a W)
ed in questo caso, siccome utilizziamo un peso alla volta, si tratta di una derivata parziale
possiamo trovare un espressione che ci dica quanto cambia J rispetto a W per qualsiasi valore di W
se questo valore è positivo, la funzione costo tende a salire
se invece dJ/dW è negativa la funzione costo sta scendendo
ora possiamo velocizzare molto le cose
siccome conosciamo in che direzione la funzione di costo diminuisce
possiamo risparmiare tutto il tempo che avremmo speso cercando nella direzione sbagliata

Portuguese: 
Vamos olhar para nossa equação até agora.
Temos cinco equações, mas poderíamos pensar nelas como uma grande equação,
e como nós temos uma grande equação que unicamente determina nosso custo J a partir de X, y, W1 e W2,
podemos usar nosso bom amigo cálculo para encontrar exatamente o que buscamos.
Queremos saber que caminho é descida, que é o mesmo que a taxa de mudança de J em relação a W.
Também conhecido como derivada, e nesse caso como estamos apenas considerando um peso por vez, isso é uma derivada parcial.
Podemos derivar uma expressão para dJ/dW que nos dará a taxa de mudança de J em relação a W para qualquer valor de W.
Se dJ/dW é positivo  então a função custo está subindo. Se dJ/dW é negativo, a função custo está descendo.
Agora nós podemos realmente acelerar as coisas. Desde que sabemos em que direção o custo decresce,
podemos salvar todo o tempo que gastaríamos procurando na direção errada.

Spanish: 
Veamos nuestras ecuaciónes hasta ahora
Tenemos 5 ecuaciones pero realmente podemos pensarlas como una gran ecuación
y ya que tenemos una gran ecuación que determina de forma única nuestro costo J  dependiendo de x, W1 y W2
Podemos usar nuestro buen amigo cálculo para encontrar exactamente lo que buscamos
Queremos saber qué camino es cuesta abajo, ¿Cuál es la tasa de cambio de J con respecto a w?
También conocido como la derivada y en este caso, ya que sólo estamos considerando un peso a la vez, esta es una derivada parcial
Podemos derivar una expresión para dJ/dW
Esto nos dará la tasa de cambio de J con respecto a w para cualquier valor de w, si dJ/dW
es positivo, entonces la función de costo va cuesta arriba  y si dJ/dW es negativa, la función de costo va en declive, ahora
podemos acelerar las cosas, ya que sabemos en qué dirección el costo disminuye
Podemos ahorrar todo el tiempo que podríamos haber dedicado a buscar en la dirección equivocada

Portuguese: 
Podemos salvar até mais tempo computacional tomando passos iterativamente na descida e parando quando o custo parar de ficar menor.
Esse método é conhecido como gradiente descendente, e embora ele não pareça tão impressionante em uma dimensão,
ele é capaz de acelerações incríveis em dimensões maiores.
De fato, no nosso vídeo final mostraremos que o que tomaria 10 elevado a 27 avaliações com o método força bruta,
tomará menos de 100 avaliações com gradiente descendente.
Gradiente descendente nos permite encontrar agulhas em palheiros muito muito largos.
Agora antes que celebremos muito aqui, há uma restrição.
E se nossa função custo não for sempre para a mesma direção? E se ela subir e depois cair?
O nome matemático para isso é não-convexo.
E isso poderia realmente estragar nosso gradiente descendente ficando preso em um mínimo local ao invés do nosso mínimo global ideal.
Uma das razões de escolher nossa função custo como a soma dos erros ao quadrado foi para explorar a natureza convexa das equações quadráticas.

Italian: 
possiamo risparmiare ancora altro tempo
spostandoci in discesa con piccoli passi, fermandoci quando il costo smette di diminuire
questo metodo è noto come discesa del gradiente (gradient descent)
ed anche se non sembra granchè in una dimensione, velocizza molto in più dimensioni
infatti nell' ultimo video, mostreremo che quello che avrebbe richiesto 10^27  calcoli
richiederà meno di 100 calcoli usando la discesa del gradiente
la discesa del gradiente ci consente di trovare aghi in pagliai molto, molto grandi
ma prima di festeggiare troppo, c'è una restrizione
che succede se la nostra funzione costo va prima su e poi di nuovo giu?
il nome matematico per questo è "non convessa"
e può creare problemi alla discesa del gradiente facendola bloccare in un minimo locale
invece del minimo globale
uno dei motivi per cui scegliamo la nostra funzione costo uguale alla somma degli errori AL QUADRATO
è per sfruttare la natura convessa delle funzioni quadratiche

English: 
We can save you even more computational time by iteratively taking steps downhill and stopping when the cost stopped getting smaller
This method is known as gradient descent and although it may not seem so impressive in one dimension
it is capable of incredible speed ups in higher dimensions in
Fact in our final video will show that what would have taken 10 to the 27th function evaluations with our brute Force method
Will take less than a hundred evaluations with gradient descent?
Gradient descent allows us to find needles in very very very large haystacks
Now before we celebrate too much here. There is a restriction
What if our cost function doesn't always go in the same direction? What if it goes up and then back down?
The mathematical name for this is non convex
And it could really throw off our gradient descent algorithm by getting it stuck in a local minimum instead of our ideal Global Minima
One of the reasons we chose our cost function to be the sum of squared errors was to exploit [the] convex Nature of quadratic equations

Spanish: 
Podemos ahorrar aún más tiempo de cálculo tomando iterativamente pasos cuesta abajo y deteniéndonos cuando el costo deja de ser más pequeño
Este método se conoce como descenso por gradiente y aunque puede no parecer tan impresionante en una dimensión
es capaz de acelerar increíblemente en dimensiones más altas, de
hecho en nuestro vídeo final mostraremos que lo que habría llevado 10^27 evaluaciones de la función con nuestro método de fuerza bruta
Tomará menos de un centenar de evaluaciones con gradiente por descenso
descenso por gradiente nos permite encontrar agujas en muy muy muy grandes montones de heno
Ahora antes de celebrar demasiado, sí hay una restricción
¿Qué pasa si nuestra función de costo no siempre va en la misma dirección? ¿Y si se va hacia arriba y luego hacia abajo?
El nombre matemático para esto es no convexo
Y lo que realmente podría descartar nuestro algoritmo de descenso por gradiente es quedarse atascado en un mínimo local en lugar de nuestro mínimo global
Una de las razones por las que elegimos nuestra función de costo como la suma de los errores al cuadrado era explotar la naturaleza convexa de las ecuaciones de segundo grado

Spanish: 
Sabemos que la gráfica de y=x^2 es una bonita parábola convexa y resulta que las versiones de dimensiones superiores también lo son
otra pieza del rompecabezas
aquí es que dependiendo de la forma en que usamos nuestros datos puede que no importa si nuestra función es convexa o no, si
utilizamos nuestros ejemplos uno a la vez en lugar de todos a la vez
A veces no importa si nuestra función es convexa, aún vamos a encontrar una buena solución
esto se llama el descenso por gradiente estocástico
Así que tal vez no debemos tener miedo de las funciones de pérdida no convexas como dice el mago de las redes neuronales Iyanla Kuhn en su excelente
charla ¿Quién tiene miedo de funciones de pérdida no convexas?
Los detalles del descenso por gradiente son un tema profundo para otro día, por ahora
Vamos a hacer nuestro descenso por gradiente al estilo por lotes
Donde utilizamos todos nuestros ejemplos a la vez y la forma en que hemos creado nuestra función de costo mantendrá las cosas bonitas y convexas
La próxima vez vamos a calcular y codificar nuestros gradientes

Italian: 
sappiamo che il grafico di y=x^2 è una parabola convessa
e risulta che le sue versioni multidimensionali lo sono anch'esse
Un altro pezzo del puzzle è che, in base a come usiamo i nostri dati,
potrebbe non importare se la nostra funzione è convessa o meno
Se utilizziamo i nostri dati d'esempio uno alla volta, anzichè tutti insieme
in alcuni casi non importa se la nostra funzione è convessa
troveremo lo stesso una buona soluzione!
questo metodo è chiamato discesa del gradiente stocastica
Quindi forse non dobbiamo spaventarci di avere funzioni di costo non convesse
come XXXX dice nel sua famosa conferenza "chi ha paura delle funzioni non convesse"
I dettagli della discesa del gradiente saranno argomento di un altro video
per adesso faremo la nostra discesa del gradiente utilizzando tutti i dati insieme
ed il moto in cui definiremo la nostra funzione di costo assicurerà che essa sia convessa
La prossima volta calcoleremo e programmeremo i nostri gradienti.

English: 
We know that the graph of y equals x squared is a nice convex parabola and it turns out that higher dimensional versions are to
another piece of the puzzle
here is that depending on how we use our data it might not matter if our function is convex or not if
We use our examples one at a time instead of all at once
Sometimes it won't matter our function is convex. We will still find a good solution
this is called stochastic gradient descent
So maybe we shouldn't be afraid of non convex loss functions as neural Network Wizard Iyanla Kuhn says in his excellent
Talk who is afraid of non convex Loss functions?
The details of gradient descent are a deep topic for another day for now
We're going to do our gradient descent batch style
Where we use all our examples at once and the way we've set up our cost function will keep things nice and convex
Next time we'll compute and code up our gradients

Portuguese: 
Sabemos que o gráfico de y = x^2 é uma agradável parábola convexa, e acontece que versões de dimensões maiores também são.
Outra peça do quebra-cabeças é que dependendo de como usamos nossos dados, talvez não importe se nossa função é convexa ou não.
Se usarmos nossos exemplos um de cada vez ao invés de todos de uma vez,
Algumas vezes não importará se a nossa função é convexa. Ainda encontraremos uma boa solução.
Isso é chamado de gradiente descendente estocástico.
Então talvez nós não devemos ficar com medo de funções de perda não-convexas,
como o mago das redes neurais Iyanla Kuhn diz em sua excelente palestra "Quem tem medo de funções de perda não-convexas?".
Os detalhes do gradiente descendente são um tópico profundo para outro dia.
Para agora, vamos fazer nosso gradiente descendente no estilo batch,
onde usamos todos os exemplos de uma vez e a maneira que estabelecemos nossa função custo manterá as coisas boas e convexas.
Da próxima vez vamos computar e codificar nosso gradientes.
