一般に、バックプロパゲーションはパーセプトロンやその他の人工ニューラルネットワーク（ANN）の基本的なアルゴリズムであるため、おそらくパーセプトロンとバックプロパゲーション技術が同等であるとは言えないでしょう。しかし、私はそれらを説明するために最善を尽くします。
パーセプトロンは、入力と出力の間の複雑な関数を近似できます。たとえば、手書きの数値を識別するためにパーセプトロンを訓練することができ、入力は写真の各ピクセルの値になり、出力は0-9の1つであり、それらの間で起こったことは明らかに非常に複雑です。これは、$ n $ -dimension入力ベクトル$ \ {x_0、x_1、...、x_ {n-1} \} $を含む人工ニューロンのアイデアに基づいています。次に、入力にバイアスを伴う加重合計を実行し、$ x_0 W_0 + x_1 + ... + x_ {n-1} w_ {n-1} + b $を獲得します。その後、合計は、通常は非線形であるアクティベーション関数に供給され、最終出力$ Y $を取得します。$ m $ -dimension出力を取得するには、$ m $の個別のニューロンで構成される層を構築し、それらのそれぞれに同じ$ n $ d-Dimension入力に供給し、それぞれの出力を収集して新しいベクトル$ \を形成することができます。{y_0、y_1、...、y_ {m-1} \} $。入力、出力、およびニューロン層は、単一層パーセプトロンを形成します。1つの層の出力が次の層の入力であるいくつかのニューロンの層を組み合わせることにより、多層パーセプトロンを取得します。これはまた、アクティブ化関数が通常非線形である理由を説明します - 線形関数を使用する場合、およびバイアスな加重合計部分も線形であるため、マルチ層パーセプトロン全体が同じ入力に線形計算を実行するだけです。単純な偏った加重合計として。非線形活性化関数の力により、代わりに、多層パーセプトロンによる複雑な関数を近似できます。
では、ニューロンの重みとバイアスを調整して、予想される関数の近似を取得するにはどうすればよいですか？最初に、予想される出力と実際の出力の間のエラーを最小限に抑えることにより、既存の入力と出力がいくつか必要です。これは、他の人に教えるために何かをする正しい方法を示すようなものです。この方法は、入力から始まる前方段階の反対で、パーセプトロンの加重合計と活性化関数を介して出力まで、後方段階と呼ばれます。この部分はより難しく、いくつかの微積分が必要なので、準備してください。
$ l $ -layer perceptronを与えられた場合、$ c $をエラーとします$ z^l_j $は$ l $レイヤーの$ j $加重合計、$ w^l_ {jk} $および$ b^l_j $重みとバイアス、および$ a^l_j = f^l（z^l_j）$は、対応する出力です。$ z^l_j = \ sum^{m^l} _ {k = 1} w^l_ {jk} a^{l-1} _k + b^l_j $を取得します。$ c $を最小限に抑えるために、勾配降下を繰り返し使用して各重量とバイアスを更新します。
$ w = w  -  \ epsilon \ frac {\ partial c} {\ partial w} $、$ b  -  \ epsilon \ frac {\ partial c} {\ partial b} $、$ \ epsilon $は学習ですレート。
ここで、タスクは、チェーンルールを使用して、各重量バイアスの部分的な派生または局所勾配を見つけることです。
$ \ frac {\ partial c} {\ partial w^l_ {jk}} = \ frac {\ partial c} {\ partial z^l_j} \ frac {\ partial z^l_j} {\ partial w^l_ {jk}} = \ frac {\ partial c} {\ partial z^l_j} a^{l-1} _k $
$ \ frac {\ partial c} {\ partial b^l_j} = \ frac {\ partial c} {\ partial z^l_j} \ frac {\ partial z^l_j} {\ partial b^l_j}}}{\ partial c} {\ partial z^l_j} $
と：
$ \ frac {\ partial c} {\ partial z^l_j} = \ frac {\ partial c} {\ partial a^l_j} \ frac {\ partial a^l_j} {\ partial z^l_j} = \ frac {\ partial c} {\ partial a^l_j} f^{l} '（z^l_j）$
$ \ frac {\ partial c} {\ partial a^l_j} = \ sum _ {k = 1} {m^{l+1}} w^{l+1} _ {jk \ frac {\ partial c}{\ partial z^{l+1} _k $
そのため、最初にフォワードステージを実行して、$ a $と$ z $を取得できます。次に、最終出力から始めます$ a^{l-1} _j $はレイヤー$ l-1 $で、$ \ frac {\ partial c} {\ partial a^{l-1} _j $および$ \を計算します。frac {\ partial c} {\ partial z^{l-1} _j $、それらを使用して$ \ frac {\ partial c} {\ partial a^{l-2} _j} $および$ \ frac {\ partial c} {\ partial z^{l-2} _j} $、そしてこれを最初のレイヤーに戻します。各層のこれら2つの部分的な誘導体が決定されると、各層の各重量バイアスの局所勾配を計算できます。何度も前方の段階を繰り返すことで、エラーを最小限に抑えることができます。局所勾配の計算は最後の層から最初の層になるので、それをbackpropagationと呼びます。
これがこれらの概念をよりよく理解するのに役立つことを願っています。
In general, Backpropagation is a fundamental algorithm in perceptrons and other artificial neural networks (ANN), so perhaps we can't say the Perceptron and Backpropagation technique are comparable. But I'll try my best to explain them.
The perceptron can approximate a complex function between the input and output. For example, a perceptron can be trained to identify hand-written numbers, and the input will be the value of each pixel of the photo with the output being one of 0-9, and what happened between them is clearly quite complicated. It is based on the idea of an artificial neuron, which takes in an $N$-dimension input vector $\{ x_0, x_1,...,x_{N-1} \}$. It then performs a weighted sum with a bias on the input, gaining $x_0 w_0 + x_1 w_1 +...+x_{N-1} w_{N-1} + b$. The sum is then fed to an activation function, which is usually non-linear, to get the final output $y$. To get an $M$-dimension output, we can build a layer made up of $M$ separate neurons and feed the same $N$-dimension input to each of them, then collect each one's output to form a new vector $\{ y_0, y_1,..., y_{M-1} \}$. The input, output, and the neuron layer form a single-layer perceptron. By combining several layers of neurons together, where one layer's output is the next layer's input, we get a multi-layer perceptron. This also explains why the activation function is usually non-linear - if we use a linear function, and as the biased weighted sum part is also linear, the whole multi-layer perceptron will just perform a linear computation to the input which is the same as a simple biased weighted sum. With the power of non-linear activation functions, instead, we can approximate complex functions by multi-layer perceptrons.
So how can we adjust the weights and biases in the neurons to get the approximation of the expected function? We first need some - usually a lot of - existing inputs and outputs to train it by minimizing the error between the expected and actual output. This is like you gonna show the correct way to do something to teach others. The method is called the Backward Stage, opposite to the Forward Stage which begins from the input, all the way through the perceptron's weighted sums and activation functions, to the output. This part is more difficult and requires some calculus so get prepared:
Given a $L$-layer perceptron, let $C$ be the error $z^l_j$ be the $j$ weighted sum of the $l$ layer, $w^l_{jk}$ and $b^l_j$ be the weights and bias, and $a^l_j = f^l(z^l_j)$ be the corresponding output. We get $z^l_j = \sum ^{m^l} _{k=1} w^l_{jk} a^{l-1}_k + b^l_j$. To minimize $C$, we repeatedly use gradient descent to update each weight and bias:
$w = w - \epsilon \frac{\partial C}{\partial w}$, $b = b - \epsilon\frac{\partial C}{\partial b}$, with $\epsilon$ being the learning rate.
Now the task is to find the partial derivate, or local gradient for each weight bias by using the chain rule:
$\frac{\partial C}{\partial w^l_{jk}} = \frac{\partial C}{\partial z^l_j} \frac{\partial z^l_j}{\partial w^l_{jk}} =  \frac{\partial C}{\partial z^l_j} a^{l-1}_k$
$\frac{\partial C}{\partial b^l_j} = \frac{\partial C}{\partial z^l_j} \frac{\partial z^l_j}{\partial b^l_j}} =  \frac{\partial C}{\partial z^l_j}$
and:
$\frac{\partial C}{\partial z^l_j} = \frac{\partial C}{\partial a^l_j} \frac{\partial a^l_j}{\partial z^l_j} = \frac{\partial C}{\partial a^l_j} f^{l}'(z^l_j)$
$\frac{\partial C}{\partial a^l_j} = \sum _{k=1}{m^{l+1}} w^{l+1}_{jk \frac{\partial C}{\partial z^{l+1}_k$
So we can first run a Forward Stage to get the $a$ and $z$. Next, we begin with the final outputs $a^{L-1}_j$ at layer $L-1$, calculate $\frac{\partial C}{\partial a^{L-1}_j$ and $\frac{\partial C}{\partial z^{L-1}_j$, then use them to calculate $\frac{\partial C}{\partial a^{L-2}_j}$ and $\frac{\partial C}{\partial z^{L-2}_j}$, and then repeat this all the way back to the first layer. With these two partial derivatives of each layer determined, we can calculate the local gradient for each weight bias of each layer. By repeating Forward Stage - Backward Stage for many times, the error can be minimized. Since the calculation of local gradients goes from the last layer to the first one, we call it the Backpropagation.
I hope this can help you better understand these concepts.