ハードリミット関数を使用した場合の単一ニューロンの分類関数

コード

import numpy as np
from matplotlib import pyplot as plt
import random
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签
plt.rcParams['axes.unicode_minus'] = False

def yxf(x):
    if x >= 0:
        return 1
    else:
        return 0


def juzheng(a,b):
    sum = 0
    for i in range(len(a)):
        sum = sum + a[i]*b[i]
    return sum


w = [0.0, 0.0, 1.0]
x0_r = []
x1_r = []
label = []
for i in range(200):
    x0 = random.randint(-10, 10)
    x1 = random.randint(-10, 10)
    if 0.5*x0 + x1 - 1 < 0:
        x0_r.append(x0)
        label.append(0)
        x1_r.append(x1)
    elif 0.5*x0 + x1 - 1 > 0:
        x0_r.append(x0)
        label.append(1)
        x1_r.append(x1)
plt.figure()
xx = np.linspace(-10, 10, 100)
err = 1
k = 0
while err > 0:
    tj = []
    for i in range(len(label)):
        X1 = [x0_r[i], x1_r[i], 1]
        I1 = juzheng(X1, w)
        y = yxf(I1)
        dui = label[i] - y
        w[0] = w[0] + 0.01 * dui * X1[0]
        w[1] = w[1] + 0.01 * dui * X1[1]
        w[2] = w[2] + 0.01 * dui * X1[2]
        tj.append(abs(dui))
    plt.clf()
    plt.ylim([-15, 15])
    for j in range(len(label)):
        if label[j] == 1:
            plt.plot(x0_r[j], x1_r[j], 'g*')
        elif label[j] == 0:
            plt.plot(x0_r[j], x1_r[j], 'ks')
    # plt.plot(X1[0], X1[1], '1', markersize=10)
    if w[1] != 0:
        yy = -w[2] / w[1] - w[0] / w[1] * xx
        plt.plot(xx, yy, label='当前曲线')
        yy1 = 1 - 0.5 * xx
        plt.plot(xx, yy1, label='理想曲线')
        # plt.pause(0.001)
        plt.legend()
    k = k + 1
    err = sum(tj)
    sss = '第'+str(k)+'次迭代.jpg'
    sss1 = '有'+str(err)+'个点不满足条件'
    plt.title(sss1)
    plt.savefig(sss)
    print('第{}次迭代不满足条件的点有{}个'.format(k, err))

ソリューションの結果

ここに画像の説明を挿入
ここに画像の説明を挿入

ここに画像の説明を挿入

結論として

線形分離可能問題の場合、ハード制限関数を使用した学習アルゴリズムは収束します。l(k)がすでに最適な分割線に非常に近い場合は、ストライドαを非常に小さく選択する必要があります。そうしないと、補正が過剰になり、W(k + 1)が頭を回転させる可能性がありますが、ストライドが非常に選択されている場合小さい、学習速度非常に遅くなります。この矛盾を解決するために、可変ステッププランを採用することができます。

おすすめ

転載: blog.csdn.net/weixin_40653652/article/details/112303601