パーセプトロンは 1 つの層のみを備えた最も単純なニューラル ネットワークであることがわかっています。パーセプトロンは、生物学的ニューロンの動作をシミュレートするマシンです。そこで今回お届けするのは、Pythonを使ってパーセプトロンを実装する方法です。モデルは次のとおりです。
n 次元の入力が与えられた場合、w と b はパラメーター、w は重み、各入力は重みに対応し、b はデータからトレーニングする必要があるバイアス項です。
活性化関数 パーセプトロンの活性化関数には多くの選択肢があります。たとえば、次のステップ関数 f を活性化関数として選択できます:
実際、パーセプトロンは任意の線形関数、任意の線形分類、または線形に適合できます。回帰問題はすべてパーセプトロンを使用して解決できます。しかし、パーセプトロンは XOR 演算を実装できず、もちろんすべての線形分類器は XOR 演算を実装できません。
いわゆる XOR 演算:
上の図では、カテゴリ 0 と 1 を分離できる直線が見つかりません。および 演算については、パーセプトロンを実装でき、それを 2 つの部分に分割する直線を見つけることができます。 。
and 演算の場合:
パーセプトロンのトレーニング
まず、重み w とバイアス b を非常に小さな数にランダムに初期化し、トレーニング中に w と b の値を継続的に更新します。
1. 重みを 0 または小さな乱数に初期化します
2. 各トレーニング サンプル x(i) に対して、次の手順を実行します:
出力値 y^ を計算します。
ここで、重みを更新します。
以下の and 演算を実装するためにパーセプトロンが使用されます。具体的なコードは次のとおりです:
# -*- coding: utf-8 -*- # python 3.4 import numpy as np from random import choice from sklearn import cross_validation from sklearn.linear_model import LogisticRegression '''''
1. 各トレーニング サンプル x(i) に対して、重みを 0 または小さな乱数に初期化します。次の手順:
計算 出力値 y^.
重みの更新
''' def load_data(): input_data=[[1,1], [0,0], [1,0], [0,1]] labels=[1,0,0,0] return input_data,labels def train_pre(input_data,y,iteration,rate): #=========================== '''''
パラメータ:
input_data: 入力データ
y: ラベルリスト
iteration: トレーニングラウンド数
rate: 学習率
''' #============================ unit_step = lambda x: 0 if x < 0 else 1 w=np.random.rand(len(input_data[0]))#随机生成[0,1)之间,作为初始化w bias=0.0#偏置 for i in range(iteration): samples= zip(input_data,y) for (input_i,label) in samples:#对每一组样本 #计算f(w*xi+b),此时x有两个 result=input_i*w+bias result=float(sum(result)) y_pred=float(unit_step(result))#计算输出值 y^ w=w+rate*(label-y_pred)*np.array(input_i)#更新权重 bias=rate*(label-y_pred)#更新bias return w,bias def predict(input_i,w,b): unit_step = lambda x: 0 if x < 0 else 1#定义激活函数 result=result=result=input_i*w+b result=sum(result) y_pred=float(unit_step(result)) print(y_pred) if __name__=='__main__': input_data,y=load_data() w,b=train_pre(input_data,y,20,0.01) predict([1,1],w,b)
関連書籍:
PHP の最も単純な文字列マッチング アルゴリズム、PHP マッチング アルゴリズム_PHP チュートリアル
最も単純な文字列マッチング アルゴリズムのチュートリアルphp で
以上がPythonでパーセプトロンを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。