Tal vez haga algunos cambios en la notación para aclarar. Para responder brevemente vaya al final de la respuesta ( Resumiendo ).
Tenemos que encontrar los parámetros $w_i$ , $i=1,2,\dotsc$ para una función lineal (conocida como función de hipóstasis ). $$h_w(x)=w_0+w_1x$$ donde $x$ es su valor de entrenamiento de entrada $V_{train}(b)$ y $h_w(x)$ es la salida de su función aprendida $V'(b)$ . Tenga en cuenta que yo usando sólo $w_0,w_1$ ya que su conjunto de entrenamiento tiene la forma $(x,y)$ para la regresión lineal con $n$ se necesita una función de hipotexto como $$h_w(x)=w_0+w_1x_1+w_2x_2+\dotsm+w_nx_n.$$ También, $w_0$ es su término de sesgo, intersección de ejes o intercepción, es decir, si la fórmula de la función lineal es $y=a+bx$ Entonces, aquí $w_0$ equivale a $a$ .
Ahora hay que encontrar los valores de $w_0$ y $w_1$ . Para trabajar menos puedes utilizar operaciones matriciales-vectoriales. Así, si tienes dos vectores $\mathbf w, \mathbf x$ tal que $$\mathbf w=\begin{pmatrix}w_0\\w_1\\\vdots\\w_n\end{pmatrix}\quad\text{and}\quad\mathbf x=\begin{pmatrix}x_0\\x_1\\\vdots\\x_n\end{pmatrix},$$ se puede obtener su suma mediante $$\mathbf w^T\mathbf x=\begin{pmatrix}w_0\;w_1\;\dotsm\;w_n\end{pmatrix}\begin{pmatrix}x_0\\x_1\\\vdots\\x_n\end{pmatrix}=w_0x_0+w_1x_1+w_2x_2+\dotsm+w_nx_n,$$ donde $\mathbf w^T$ es la transposición de $\mathbf w$ . Tenga en cuenta que utilizamos $x_0=1$ para fijar el término de intercepción $w_0$ (ya que $w_0x_0=w_01=w_0$ ). Así, para simplificar nuestra notación, podemos computar todos los valores entrenados por $$h(\mathbf x)=\sum_{i=0}^n w_ix_i=\mathbf w^T\mathbf x.$$ Por último, supongamos que tenemos $m$ pertenece a nuestro conjunto de entrenamiento. Necesitamos definir la función de coste (función de error) a partir de cada valor de los parámetros $w$ al número de error en $\mathbf R$ (números reales): $$E(w)=\frac{1}{2}\sum_{i=1}^m(h_w(x^{(i)}) - y^{(i)})^2,$$ donde $(x^{(i)},y^{(i)})\in \text{Training set}$ (es decir, $(x^{(i)}, y^{(i)})$ es el $i^{th}$ -elemento de conjunto de traning. Esto para evitar confusiones: índice superior al $i^{th}$ -elemento en el conjunto de entrenamiento. Índice inferior a $i^{th}$ -parámetro en $h_w$ ).
Algoritmo LMS. Consideramos que el descenso de gradiente que comienza con unos datos iniciales $w$ y realiza repetidamente la actualización $$w_j:=w_j-\eta\frac{\partial}{\partial w_j}E(w).$$ (Esta actualización es simultánea, es decir, primero se computan todos los errores y luego se actualiza).
Para aplicar este algoritmo al caso de la función lineal, obtenemos para algunos $$\begin{array}{rcl}\frac{\partial}{\partial w_j}E(w)&=&\frac{\partial}{\partial w_j}\frac{1}{2}\sum_{i=1}^m(h_w(x^{(i)}) - y^{(i)})^2\\&=&\frac{1}{2}\sum_{i=1}^m\frac{\partial}{\partial w_j}(h_w(x^{(i)}) - y^{(i)})^2\\&=&\frac{1}{2}\sum_{i=1}^m2(h_w(x^{(i)}) - y^{(i)})x_j\\&=&\frac{1}{2}2\sum_{i=1}^m(h_w(x^{(i)}) - y^{(i)})x_j\\&=&\sum_{i=1}^m(h_w(x^{(i)}) - y^{(i)})x_j.\end{array}$$ Por lo tanto, debe actualizar el peso por $$w_j:=w_j+\eta\sum_{i=1}^m(y^{(i)}-h_w(x^{(i)}))x_j^{(i)}.$$
Con un espíritu similar al de $\mathbf w^T\mathbf x$ , podemos calcular el error utilizando la matriz-vector (escribo su caso a la derecha). Supongamos que su conjunto de entrenamiento es $$X=\begin{pmatrix}-(x^{(1)})^T-\\-(x^{(2)})^T-\\\vdots\\-(x^{(m)})^T-\end{pmatrix}.$$ Also, let $\mathbf y$ be the $m$-dimensionl vector with your target values: $$\mathbf y=\begin{pmatrix}y^{(1)}\\y^{(2)}\\\vdots\\y^{(m)}\end{pmatrix}.$$ Ahora bien, como $h_w(x^{(i)})=(x^{(i)})^T\mathbf w$ podemos verificar $$\begin{array}{rcl}X\mathbf w -\mathbf y&=&\begin{pmatrix}(x^{(1)})^T\mathbf w\\\vdots\\(x^{(m)})^T\mathbf w\end{pmatrix}-\begin{pmatrix}y^{(1)}\\\vdots\\y^{(m)}\end{pmatrix}\\&=&\begin{pmatrix}(x^{(1)})^T\mathbf w-y^{(1)}\\\vdots\\(x^{(m)})^T\mathbf w-y^{(m)}\end{pmatrix}.\end{array} $$ Así, utilizando $\mathbf v^T\mathbf v = \sum_i\mathbf v_i^2$ para un vector $\mathbf v$ obtenemos $$\begin{array}{rcl}E(w)&=&\frac{1}{2}\sum_{i=1}^m(h_w(x^{(i)}) - y^{(i)})^2\\&=&\frac{1}{2}(X\mathbf w-\mathbf y)^T(X\mathbf w-\mathbf y).\end{array}$$
Resumiendo. Para obtener $$\mathbf w=\begin{pmatrix}w_0\\w_1\end{pmatrix},$$ proceder:
- Establezca sus colecciones $x$ y $y$ : $$x=\begin{pmatrix}1\\3\\5\\7\\9\end{pmatrix}\qquad y=\begin{pmatrix}1\\3\\4\\3\\5\end{pmatrix}.$$
-
Bucle hasta que piense que $w_j$ convergen (prueba con $10$ iteraciones) {
para $i=1$ a $m$ { $$w_j:=w_j+\eta\sum_{i=1}^m(y^{(i)}-h_w(x^{(i)}))x_j^{(i)}\qquad(\text{for each }j)$$ }
}
En cambio, puede utilizar
1'. Establezca sus vectores $X$ y $\mathbf y$ : $$X=\begin{pmatrix}1&1\\1&3\\1&5\\1&7\\1&9\end{pmatrix}\qquad\mathbf y=\begin{pmatrix}1\\3\\4\\3\\5\end{pmatrix}.$$ 2'. Haz un bucle hasta que creas que $\mathbf w$ convergen (prueba con $10$ iteraciones) { $$\mathbf w:=\mathbf w-\frac{\eta}{m}\left((X\mathbf w-\mathbf y)^TX\right)$$ }
Nota. Con lo anterior se puede probar una fórmula analítica para obtener los parámetros, utilizando la ecuaciones normales para computar $\mathbf w$ por $$\mathbf w=(X^TX)^{-1}X^T\mathbf y.$$
Evidentemente, hay que utilizar un programa informático (como python u octave) o un dispositivo de cálculo (con soporte matricial-vectorial) para calcular los valores.
He hablado de dos maneras, usando iteraciones y usando vectores. Además, he evitado algunos pasos sobre sus datos. Cualquier pregunta, para los pasos adicionales, por favor pregunte.