我正在尝试制作几个训练示例,以便为特定网络获得一组权重和偏置,该网络正确实现了硬阈值激活函数。
四个输入 x_1, … x_4,其中 x_i 为实数,网络必须在 x_1 < x_2 < x_3 < x_4(排序顺序)时输出(y) 1,否则输出 0。
硬阈值激活函数;
f(z) = 1(如果 z >= 0)或 0(如果 z < 0)
h1 = x1w11 + x2w12 + x3w13 + x4w14 + b11h2 = x1w21 + x2w22 + x3w23 + x4w24 + b21h3 = x1w31 + x2w32 + x3w33 + x4w34 + b31y = w1h1 + h2w2 + h3w3 + b (*实际上 h1, h2, h3 是 f(h1),f(h2),f(h3),因为激活函数的关系)
并且,f(y)。
我猜训练示例应该是
(-2,-1,0,1) -> 输出 1, (0,0,0,0) -> 输出 0, (0,0,0,1) -> 输出 0, (1,2,3,4) -> 输出 1。
… 等等。但是输入的范围太广,难以构建具体的示例来使用多层感知器算法。
你能帮我找到适合应用该算法
的示例吗?
回答:
不,它并不太广,你可以只关注每个 x_i 的 [0, 1] 范围,因为无论如何你都需要归一化的数据来训练神经网络。
所以你基本上可以生成在 [0, 1] 范围内均匀分布的随机数,检查它们是否排序,然后相应地生成标签。然后你可以重复这一过程,比如进行 10,000 次或 100,000 次,这样你就有了训练多层感知器的数据集。你也可以选择一个步长来对 [0, 1] 范围进行离散化,以生成这些数字。