
English: 
Hello Word! It's Siraj!
By the end of this video you will understand the basic math behind neural networks since we’ll build 4 types of them.
You know that feeling you get when you’re in love and you see that special someone?
That magical, ethereal sensation that just can’t be described by words? Well, it actually can be described.
By math. The features of a face, word associations, the tone of their voice, these are all related variables.
And we can represent this relationship using a function.
We have different models for approximating different functions.
But humans can approximate almost any function.
So wouldn't it make sense to model our own capability?
Neural Networks, inspired by the brain, are universal function approximators. That means they can learn any function.

Spanish: 
¡Hello World, Es Siraj!
Al final de este vídeo tu entenderás las matemáticas básicas detrás de las redes neuronales ya que construiremos 4 tipos de ellas.
Conoces esa sensación cuando estas enamorado y ves a alguien especial?
ese mágico, sensación etérea que no puede ser descrita por palabras? Bueno,  actualmente puede ser descrito.
Por las matemáticas. Los rasgos faciales, palabras asociadas, el tono de la voz, estas son todas las variables relacionadas.
y podemos representar esta relación usando una función.
tenemos diferentes modelos para aproximar diferentes funciones.
Pero los humanos pueden aproximar casi cualquier función
Entonces, ¿no tendría sentido modelar nuestra propia capacidad?
Las redes neuronales están inspiradas  en el cerebro, son funciones aproximadoras universales. Eso significa que pueden aprender cualquier función.

English: 
Although silicon is a very different medium than the chemical soup in our head, they’re still able to replicate much of what we do like nothing else we’ve created.
This was proven in 1989 when he stated that “we show that arbitrary decision regions can be arbitrarily well approximated by continuous feedforward neural networks with only a single internal,
hidden layer and any continuous sigmoidal nonlinearity”.
Wait, what?  Are you trying to throw hands here, I'm, ok...
Look, let’s just build a simple af neural network. Alright so given some input data X and some associated output labels Y, there exists a function that represents the mapping between them.
Our goal is to learn that function so we can then input some random X value and it will predict its associated Y value.
This input data is represented as a matrix where each row is a different datapoint and each column is one of its features, just arbitrary 1s and 0s in our case.

Spanish: 
a pesar de que el silicio es un medio  muy diferente que la sopa química en nuestra cabeza,  todavía son capaces de replicar mucho de lo que hacemos como nada más que hemos creado.
Esto fue probado en 1989 cuando afirmó que "Mostramos que las regiones de decisión arbitrarias pueden ser arbitrariamente bien aproximadas por redes neuronales de alimentación continua continua con sólo una única,
Capa oculta y cualquier no linealidad sigmoidal continua ".
Espera, que? estas intentado de aventarme los puños aquí, yo voy, ok...
Mira, vamos a construir una simple red neuronal. Así pues, dado algunos datos de entrada X y algunas etiquetas de salida asociadas Y, existe una función que representa la correlación entre ellas.
Nuestra meta es aprender esa función así que podemos entonces introducir algún valor X aleatorio y predecir su valor Y asociado.
Estos datos  de entrada esta representados como una matriz donde cada fila es un punto de dato diferente y cada columna es una de estas caracteristicas, sólo arbitrarias 1s y 0s en nuestro caso.

Spanish: 
Entonces como podemos aprender  este mapeo? Imaginate que existió una matriz tal que cada vez que multiplicamos nuestros datos de entrada por esa matriz, el resultado nos daría la salida correcta cada vez.
Eso sería bastante impresionante ¿verdad? Eso es lo que estamos tratando de hacer. Encuentra esa matriz, ese coeficiente de la función que estamos tratando de aprender. Lo llamaremos nuestro valor de peso. Así que lo inicializaremos como una matriz de valores aleatorios.
Eventualmente, queremos esta matriz que tenga los valores ideales. Valores tales que cuando calculamos el producto de un punto entre nuestra entrada de datos en esta matriz podra darnos una correcta salida de datos.
Pero espera! Tenemos que añadir algo mas aquí!
No es suficiente solo  decir que el producto de estas dos matrices es nuestra salida de datos.
No, necesitaremos pasar esa salida a una función sigmoide para normalizar o ajustar el resultado a valores de probabilidad entre 0 y 1.
Así que multiplicando nuestra entra por  esta matriz y pasando el resultado de esta función de activación nos dara un valor de salida, 4 suposiciones, una para cada punto de datos!

English: 
So how do we learn this mapping? Imagine there existed a matrix such that every time we multiplied our input data by that matrix, the result would give us the correct output every time.
That’d be pretty awesome right? Thats what we’re trying to do. Find that matrix, that coefficient of the function we’re trying to learn. We’ll call it our weight value. So we’ll initialize it as a matrix of random values.
Eventually, we want this matrix to have the ideal values. Values such that when we compute the dot product between our input data and this matrix it will give us the correct output.
But wait! We’ve gotta add something else here.
It's not enough to just say the product of these two matrices is our output.
No, we’ll need to pass that output into a sigmoid function to normalize or adjust the result to probability values between 0 and 1.
So multiplying our input by this matrix and passing the result to this activation function gives us an output value, 4 guesses, one for each data point !

Spanish: 
¡Pero las suposiciones están equivocadas! Sabemos cuál debe ser nuestra producción real , así que vamos a calcular la diferencia entre nuestra predicción y los valores actuales de Y. Estamos bastante lejos.
Sabemos que el Gradient Descent funciona bien para la regresión lineal, así que vamos a intentarlo aquí también!
El descenso de gradiente es todo acerca de buscar el mínimo de una función de error, así que permite ajustar los valores en nuestra matriz agregando nuestro valor de degradado a ella. Ahora nuestro rendimiento previsto es ligeramente mejor.
Hagamos esto una y otra vez. Nuestro error disminuirá cada iteración o paso de tiempo y eventualmente nuestra red será capaz de predecir la etiqueta correcta.
Una red neuronal es realmente solo una  gran función compuesta.
Esto significa que es una función que consiste en otras funciones.

English: 
But the guesses are wrong! We know what our actual output should be, so lets compute the difference between our prediction and the actual Y values. We’re pretty far off.
We know that gradient descent works well for linear regression, so lets try it here too! We’ll compute the partial derivative of the error with respect to our weight and that gives us a gradient value.
Gradient descent is all about finding the minimum of an error function, so lets adjust the values in our matrix by adding our gradient value to it. Now our predicted output is slightly better.
Let's just do this over and over again. Our error will decrease every iteration or time step and eventually our network will be able to predict the right label.
A neural network is really just one big composite function.
That means its a function that consists of other functions.

Spanish: 
Cada capa es solo una función que toma como entrada el resultado de salida de funciones previas. Eso es.
-Traduzcan esta parte por ustedes, ya no me alcanzaron las etiquetas jaja-
El conjunto de datos que usamos tiene una relación linear, Había una relación directa uno-a-uno entre los valores de entrada y salida.

English: 
Each layer is just a function that takes as its input the result of the previous functions output. That’s it.
*music*
The dataset we used had a linear relationship , there was a direct one-to-one relationship between the input and output values.

English: 
But what if we used a dataset that instead had a one-to-one relationship between a combination of inputs? A nonlinear relationship?
Our simple af neural network wouldn’t be able to learn it, In order to first combine the input data into a representation that can then have a one-to-one relationship with the output, we need to add another layer.
Our first layer will combine the inputs, and our second layer will then map them to the output using the output of the first layer as input.
So we’ll multiply the input by the first weight matrix, activate it with our sigmoid and pass the result to the next layer as its input. It’s just does the exact same process.
Input times weight, activate. It rhymes! When we compute our prediction value, since we have multiple weight values to update
we’ll recursively compute our error gradient for each layer we have in the opposite direction.

Spanish: 
Pero ¿qué pasa si usamos un conjunto de datos que en su lugar tenía una relación uno a uno entre una combinación de insumos? ¿Una relación no lineal?
Nuestra simple red neural no sería capaz de aprenderlo, con el fin de combinar los datos de entrada en una representación que puede tener una relación de uno a uno con la salida, tenemos que añadir otra capa.
Nuestra primera capa combinara estas entradas, nuestra segunda capa los asignará a la salida usando la salida de la primera capa como entrada.
así que multiplicaremos la entrada por la primera matriz  de pesos.
Ingrese el tiempo de peso, active. ¡Eso rima! Cuando calculamos nuestro valor de predicción, ya que tenemos varios valores de peso para actualizar
Vamos a recursivamente calcular nuestro gradiente de error para cada capa que tenemos en la dirección opuesta.

Spanish: 
Entonces podemos actualizar el valor  de pesos individualmente. Es por eso que cuando el descenso de gradiente se aplica específicamente a las redes neuronales, se llama propagación posterior.
Debido a que después de que propagamos nuestros datos de entrada, propagamos hacia atrás nuestro gradiente de error para actualizar nuestros valores de peso.
Lo que acabamos de construir se llamó una red de feedforward.
Son ideales para modelar relaciones entre cualquier conjunto de variables de entrada y una o más variables de salida.
¿Qué pasa si el tiempo importa en la secuencia de entrada?
Con eso me refiero, ¿qué pasa si la ordenación importaba. ¿Como si estuviéramos tratando de predecir el próximo precio de la acción o nota musical en una secuencia?
bien, necesitaremos modificar nuestra red de  FeedFoward para convertirse en una red recurrente, que le permitirá aprender un mapeo secuencial
???
???

English: 
Then we can update each weight value individually. That's why when gradient descent is applied to neural networks specifically, its called back propagation.
Because after we forward propagate, our input data, we backward propagate our error gradient to update our weight values.
What we just built was called a feedforward network.
They’re great for modeling relationships between any set of input variables and one or more output variables.
What if time mattered in the input sequence?
By that I mean, what if the ordering mattered. Like if we’re trying to predict the next stock price or musical note in a sequence?
Well, well need to modify our feedforward network to become a recurrent network, which will allow it to learn a sequential mapping
 
We could apply a linear transformation to the matrix.
Totally I'm all about the projections.

English: 
So this time we’ve got sequential input data
We still initialize our weights randomly like before.
 
We still multiply our input by our weight matrix and apply an activation function to the result for every layer.
The difference in forward propagation this time though,
is that for each element in the sequence, we don’t just us it alone as the input we use the hidden state from the previous time step as well.
So a hidden state at a given time step is a function of the input at the same time step modified by a weight matrix added to the hidden state of the previous time step multiplied
by its own hidden state to hidden state matrix.

Spanish: 
Así que esta vez tenemos datos de entrada secuenciales
Todavía inicializamos nuestros pesos al azar como antes.
 
Todavía multiplicamos nuestra entrada por nuestra matriz de peso y aplicamos una función de activación al resultado para cada capa.
La diferencia en la propagación hacia adelante (forward) esta vez aunque
Es que para cada elemento de la secuencia, no sólo nosotros solo como la entrada que utilizamos el estado oculto de la etapa de tiempo anterior también.
Así, un estado oculto en un paso de tiempo dado es una función de la entrada en el mismo paso de tiempo modificado por una matriz de peso añadida al estado oculto del paso de tiempo anterior multiplicado
Por su propio estado oculto a la matriz de estado oculto.

Spanish: 
La propagación posterior en este caso funciona de la misma manera que en una red feedforward, calculamos los gradientes de nuestro error con respecto a los pesos y los usamos para actualizar los pesos.
Debido a que las redes recurrentes son un modelo temporal, lo llamamos retro-propagación a través del tiempo.
¡Doc! Vamos a volver a la propagación a través del tiempo.
Pero, ¿puede una red neuronal seguir aprendiendo una función si tenemos datos no etiquetados?
"You Betcha" (Sí)
=n=
Y una red neural que puede se llama un mapa de auto-organización. Funciona bastante diferente, vamos a mirarlo.
Todavía comenzamos inicializando los pesos de la red aleatoriamente.
Piense en ello como una matriz bidimensional de neuronas.
Cada neurona tiene una posición específica topológicamente y contiene un vector de pesos de las mismas dimensiones que los vectores de entrada. Las líneas que conectan los nodos sólo representan adyacencia.
No significan una conexión como se indica normalmente cuando se habla de las redes anteriores.

English: 
Back-propagation in this case works the same way as in a feedforward network, we calculate the gradients of our error with respect to to the weights and use them to update the weights.
Because recurrent nets are a temporal model, we call it back-propagation through time.
Doc! Let's back-propagation through time.
But can a neural network still learn a function if we have unlabeled data?
You Betcha!
=n=
and one neural net that can is called a self organizing map. It works pretty differently, lets look at it.
We still start off by initializing the weights of the network randomly.
Think of it as a 2 dimensional array of neurons.
Each neuron has a specific position topologically and contains a vector of weights of the same dimensions as the input vectors. The lines connecting nodes just represent adjacency.
They don't signify a connection as normally indicated when talking about the previous networks.

English: 
Then, we’ll pick a random data point from our training set to calculate the Euclidean distance between that vector and each weight.
The one thats closest to it is the most similar, its the best matching unit.
We iterate through all the other nodes to determine whether or not they are within the radius of it, then adjust the weights of its neighbors
 
This whole process is what we repeat iteratively and is apart of the training procedure.
This map of nodes self organizes into clusters for each learned label. nearby locations in the map represent inputs with similar properties.
We can even visualize it and this acts as a great tool to observe these clusters.
and when give these networks more aka deeper layers, lots of data, and lots compute we call that field deep learning.

Spanish: 
Luego, seleccionaremos un punto de datos aleatorio de nuestro conjunto de entrenamiento para calcular la distancia euclídea entre ese vector y cada peso.
El que está más cerca de él es el más similar, es la mejor unidad de coincidencia.
Hacemos una iteración a través de todos los otros nodos para determinar si están o no dentro del radio de la misma, luego ajustar los pesos de sus vecinos
 
Todo este proceso es lo que repetimos iterativamente y es aparte del procedimiento de entrenamiento.
Este mapa de nodos auto se organiza en grupos para cada etiqueta aprendida. Las ubicaciones cercanas en el mapa representan entradas con propiedades similares.
Podemos incluso visualizarlo y esto actúa como una gran herramienta para observar estos grupos.
Y cuando se dan a estas redes más aka capas más profundas, un montón de datos, y los lotes de computación llamamos a ese campo de aprendizaje profundo.

Spanish: 
Este es el subconjunto más caliente del aprendizaje automático.🔥
Aunque they'e no una cura toda la solución, se realizan realmente bien si usted tiene esas dos cosas.
En resumen, las Redes Neuronales son sólo una serie de operaciones matriciales, sin importar el tipo son solo una función compuesta grande.
Debido a que utilizan no linealidades en esta serie de operaciones como el sigmoide, pueden aproximarse a cualquier función tanto lineal como no lineal.
Y si no tenemos etiquetas para nuestros datos, podemos usar un tipo de red neural llamada mapa de auto-organización para aprender los grupos de etiquetas.
El mago de la semana es Hammad Shaikh.
Me impresione mucho con su notebook :0 !
Se ilustra cómo el uso de L2 regularización reduce el sobre ajuste de alto grado polinomios en el contexto de la regresión lineal
(Específicamente la relación entre ventas de películas y clasificaciones de películas)
You make me smile ♪♫
El sub-campeonn es Ong Ja Rui

English: 
It’s the hottest subset of machine learning.
Although they’e not a cure all solution, they perform really well if you have those two things.
To summarize, Neural Networks are just a series of matrix operations, no matter the type they are just one big composite function.
Because they use nonlinearities in this series of operations like the sigmoid, they can approximate any function both linear and nonlinear.
And If we don’t have labels for our data, we can use a type of neural network called a self organizing map to learn the label clusters.
The Wizard of the Week is Hammad Shaikh.
I was so, so impressed by his notebook :0
It illustrated how using L2 regularization reduces overfitting for high degree polynomials in the context of linear regression
(specifically the relationship between movie sales and movie ratings)
You make me smile ♪♫
And the runner up is Ong Ja Rui.

English: 
He used a regularized linear regression to predict the impact of climate change on temperatures in LA.
What a dope use case. This weeks coding challenge is to build your own self organized map.
See the description for all the details and post your GitHub link in the comments section.
Please Subscribe for more programming videos and for now I’ve gotta practice my Dutch so thanks for watching :)
Subtitles by David Resendiz (Pinkie The Smiling Cat)

Spanish: 
Utilizó una regresión lineal regularizada para predecir el impacto del cambio climático en las temperaturas en LA.
Esta semana codificación desafío es construir su propio mapa organizado por ti mismo.
Mira la descripción para todos los detalles y postea tu link de GitHub en la sección de comentarios.
Por favor suscribete para mas videos de programación y por ahora voy a practicar mi Alemán así que gracias por ver. :)
Subtitulos por David Resendiz
