史上最もわかりやすい手書き人工ニューラルネットワーク - (1) (https://blog.csdn.net/xipengbozai/article/details/118115444 より転載)...

1. ニューロン - 思考の基本単位

コンピューターは、その速度では驚くべきものですが、物体認識や複雑なタスクには無力である一方で、人間はコンピューターほど高速ではありませんが、多くの非常に複雑な処理を行うことができることを私たちは知っています。ハエには、飛行、餌の発見、天敵の回避などの複雑なタスクを完了するために約 100,000 個のニューロンがあります。線虫のニューロンは 302 個しかありませんが、身もだえなどの非常に便利なタスクを実行できますが、これらのタスクは高速なコンピューターでは完了するのが困難です。

これはニューロンのグラフです。

樹状突起細胞体軸索ミエリン、および軸索末端のシナプスで構成されます

        インターネットからの写真

下の写真は線虫の神経接続図、つまり線虫の神経ネットワークを示したもので、非常に複雑な構造をしていることがわかります。

 

Caenorhabditis elegans、Nature の写真、2019、doi:10.1038/s41586-019-1352-7。

生物学者は、電気的および化学的信号がニューロン間で伝達されることを発見しました。たとえば、注射を受けると針が痛み、針からの信号が皮膚を通って脳神経に伝達されます。針による痛みの要因は、侵害受容器のみを活性化します。侵害受容器は痛みの信号に変換され、後根神経節ニューロンの中心プロセスを介して脊髄後角に伝達され、そこで投射ニューロンが上行性伝導経路を形成し、脳幹を通過します。二次リレーは皮質に到達し、痛み感覚を生み出します。つまり、針を刺す程度が一定の閾値に達した場合にのみ痛みが発生するのです

下の写真は生物学的ニューロンと人工ニューロンを比較したものですが、類似点はたくさんありますか?

例:樹状突起は入力軸索出力ポート、軸索の各末端シナプスは出力ニューロンの細胞体は活性化関数のようなものです。細胞体に入力さた信号は細胞体にのみ到達するためです。特定のレベルのしきい値の細胞体のみが処理され、ニューロン細胞体に加えて他の処理が行われる場合があります。

 

                                                                画像はインターネットから来ました

ニューロンにインスピレーションを得て、人々は人工ニューロンを発明しました。以下の図に示すように、基本的な考え方は、すべての入力ニューロンの信号が特定の重みに従って同時に重ね合わされ、重ね合わせられた合計信号が特定のしきい値を超えた場合にのみニューロンの出力がトリガーされるというものです。 。

人工ニューロンを次の式で説明します。

出力 = f(x1*w1+x2*w2+x3*w3+....+xn*wn+b)

1.output はニューロンの出力です。

2.x1——xn はニューロンの n 入力です。

3.w1——wn は、n 個の入力に対応するニューロンの重みです。

4.b は外界の影響を受けるオフセットです。

5.f は活性化関数であり、出力を制御できる関数です。

したがって、本質的に、人工ニューロンは、n 要素の線形関数に非線形処理を加えたものです。

 

                                                                画像ソースネットワーク

2. ニューラル ネットワーク – インテリジェンスが発生する場所

以下の図は、人間の脳の神経ネットワークのカラーマップと脳の模式図を示したもので、数億個の神経細胞がさまざまなつながりを持って巨大な神経ネットワークを形成しており、人間は生物学的叡智の頂点に立っています。

                                                                                                                                        画像ソースネットワーク

人工ニューラル ネットワークは、生物学的または人間のニューラルネットワークをシミュレートすることによって作成されます。以下は7層の人工ニューラル ネットワークと3 層の人工ニューラル ネットワークです。

人工神经元连接到一起形成了人工神经网络,信号从神经网络的最左侧流向最右侧,即信号从输入层输入,穿过中间层,最终流向输出层

前面说过,每一个神经元相当便于一个n元的线性函数加一个非线性的处理,那么人工神经网络就是多层的多个n元的线性函数加一个非线性的处理的多次叠加与非线性处理,这样想的话人工神经网络确实是一个很复杂的东西,让人很难理解,不过我们不用想那么多,就这么个东西却有很大的用处。

 

我们以最简单的二层人工神经网络来理解,如下图所示,第一层有3个人工神经元,第二层有2个人工神经元。

信号流向从第一层流向第二层最后输出,可见第一层的输出对于第二层就是输入,所以

第二层的第一个神经元的输出可以写为:

z1 = g(a1*w1+a2*w2+a3*w3)

类似第二层的第二个神经元输出可以写为:

z2 = g(a1*w4+a2*w5+a3*w6)

其中,w1为第一层第一个神经元与第二层第一个神经元之间的连接权重,其余权重以相同的方式理解。为了便于记忆:我们把第1层第i个神经元与第二层第j个神经元的连接权重用

私たち
 表示,把第一层第i个神经元的输出用 
あい
 表示,第二层第j个神经元的输出用 
zj
 表示,那么下面的二层神经网络输出可以表示为:

z1 = g(a1*w11+a2*w21+a3*w31)

z2 = g(a1*w12+a2*w22+a3*w32)

仔细观察这两个表达式,忽略掉g激活函数,感觉有些像线性代数里的线性方程组。

我们知道线性方程组可以用矩阵来描述,所以二层神经网络的输出是否可以用矩阵来描述呢?答案是肯定的。

使用矩阵描述二层神经网络如下:

简写为:

2 層ニューラル ネットワークからインスピレーションを得て、さらに多くのニューラル ネットワーク層を行列で記述できるでしょうか? もちろんそれも可能です。3 層は 2 層の拡張であり、さらに多くの層は 3 層の拡張であるため、行列の乗算は多層ニューラル ネットワークを表すことができます

 

スペースの問題のため、その後のニューラル ネットワークのアルゴリズムとパラメーターの内容については第 2 部で説明し、第 3 部ではニューラル ネットワークの Python 実装コードとトレーニングとテストの状況について説明します。

手書きニューラル ネットワーク ソース コードのダウンロード アドレス:  https://download.csdn.net/download/xipengbozai/19781210?spm=1001.2014.3001.5501

https://blog.csdn.net/xipenbozai/article/details/118115444より転載

おすすめ

転載: blog.csdn.net/xipengbozai/article/details/118205223