# Delta rule

In machine learning, the delta rule is a gradient descent learning rule for updating the weights of the inputs to artificial neurons in a single-layer neural network.[1] It can be derived as the backpropagation algorithm for a single-layer neural network with mean-square error loss function.

For a neuron ${\displaystyle j}$ with activation function ${\displaystyle g(x)}$, the delta rule for neuron ${\displaystyle j}$'s ${\displaystyle i}$-th weight ${\displaystyle w_{ji}}$ is given by

${\displaystyle \Delta w_{ji}=\alpha (t_{j}-y_{j})g'(h_{j})x_{i},}$

where

• ${\displaystyle \alpha }$ is a small constant called learning rate
• ${\displaystyle g(x)}$ is the neuron's activation function
• ${\displaystyle g'}$ is the derivative of ${\displaystyle g}$
• ${\displaystyle t_{j}}$ is the target output
• ${\displaystyle h_{j}}$ is the weighted sum of the neuron's inputs
• ${\displaystyle y_{j}}$ is the actual output
• ${\displaystyle x_{i}}$ is the ${\displaystyle i}$-th input.

It holds that ${\textstyle h_{j}=\sum _{i}x_{i}w_{ji}}$ and ${\displaystyle y_{j}=g(h_{j})}$.

The delta rule is commonly stated in simplified form for a neuron with a linear activation function as

${\displaystyle \Delta w_{ji}=\alpha \left(t_{j}-y_{j}\right)x_{i}}$

While the delta rule is similar to the perceptron's update rule, the derivation is different. The perceptron uses the Heaviside step function as the activation function ${\displaystyle g(h)}$, and that means that ${\displaystyle g'(h)}$ does not exist at zero, and is equal to zero elsewhere, which makes the direct application of the delta rule impossible.

## Derivation of the delta rule

The delta rule is derived by attempting to minimize the error in the output of the neural network through gradient descent. The error for a neural network with ${\displaystyle j}$ outputs can be measured as

${\displaystyle E=\sum _{j}{\tfrac {1}{2}}\left(t_{j}-y_{j}\right)^{2}.}$

In this case, we wish to move through "weight space" of the neuron (the space of all possible values of all of the neuron's weights) in proportion to the gradient of the error function with respect to each weight. In order to do that, we calculate the partial derivative of the error with respect to each weight. For the ${\displaystyle i}$th weight, this derivative can be written as

${\displaystyle {\frac {\partial E}{\partial w_{ji}}}.}$

Because we are only concerning ourselves with the ${\displaystyle j}$-th neuron, we can substitute the error formula above while omitting the summation:

${\displaystyle {\frac {\partial E}{\partial w_{ji}}}={\frac {\partial }{\partial w_{ji}}}\left[{\frac {1}{2}}\left(t_{j}-y_{j}\right)^{2}\right]}$

Next we use the chain rule to split this into two derivatives:

${\displaystyle {\frac {\partial E}{\partial w_{ji}}}={\frac {\partial \left({\frac {1}{2}}\left(t_{j}-y_{j}\right)^{2}\right)}{\partial y_{j}}}{\frac {\partial y_{j}}{\partial w_{ji}}}}$

To find the left derivative, we simply apply the power rule and the chain rule:

${\displaystyle {\frac {\partial E}{\partial w_{ji}}}=-\left(t_{j}-y_{j}\right){\frac {\partial y_{j}}{\partial w_{ji}}}}$

To find the right derivative, we again apply the chain rule, this time differentiating with respect to the total input to ${\displaystyle j}$, ${\displaystyle h_{j}}$:

${\displaystyle {\frac {\partial E}{\partial w_{ji}}}=-\left(t_{j}-y_{j}\right){\frac {\partial y_{j}}{\partial h_{j}}}{\frac {\partial h_{j}}{\partial w_{ji}}}}$

Note that the output of the ${\displaystyle j}$th neuron, ${\displaystyle y_{j}}$, is just the neuron's activation function ${\displaystyle g}$ applied to the neuron's input ${\displaystyle h_{j}}$. We can therefore write the derivative of ${\displaystyle y_{j}}$ with respect to ${\displaystyle h_{j}}$ simply as ${\displaystyle g}$'s first derivative:

${\displaystyle {\frac {\partial E}{\partial w_{ji}}}=-\left(t_{j}-y_{j}\right)g'(h_{j}){\frac {\partial h_{j}}{\partial w_{ji}}}}$

Next we rewrite ${\displaystyle h_{j}}$ in the last term as the sum over all ${\displaystyle k}$ weights of each weight ${\displaystyle w_{jk}}$ times its corresponding input ${\displaystyle x_{k}}$:

${\displaystyle {\frac {\partial E}{\partial w_{ji}}}=-\left(t_{j}-y_{j}\right)g'(h_{j})\;{\frac {\partial }{\partial w_{ji}}}\!\!\left[\sum _{i}x_{i}w_{ji}\right]}$

Because we are only concerned with the ${\displaystyle i}$th weight, the only term of the summation that is relevant is ${\displaystyle x_{i}w_{ji}}$. Clearly,

${\displaystyle {\frac {\partial (x_{i}w_{ji})}{\partial w_{ji}}}=x_{i}.}$
giving us our final equation for the gradient:
${\displaystyle {\frac {\partial E}{\partial w_{ji}}}=-\left(t_{j}-y_{j}\right)g'(h_{j})x_{i}}$

As noted above, gradient descent tells us that our change for each weight should be proportional to the gradient. Choosing a proportionality constant ${\displaystyle \alpha }$ and eliminating the minus sign to enable us to move the weight in the negative direction of the gradient to minimize error, we arrive at our target equation:

${\displaystyle \Delta w_{ji}=\alpha (t_{j}-y_{j})g'(h_{j})x_{i}.}$