首页 > 解决方案 > 定义仅针对 2D 平面上特定形状内的点触发的神经网络的权重和阈值

问题描述

我最初在 AI StackExchange 上问过这个问题但由于这是一个算法问题,所以在这里可能更合适。

我在 2D 平面上有一个形状,我想绘制一个神经网络来检测点 (x,y) 是在形状内还是在形状外。

作为测试,假设我有一个矩形,它的四个点受以下约束:

(1,3), (2,3), (1,1) and (2,1).

这种形状的线的方程是:

x=2
x=1
y=1
y=3

我的最终问题是如何将其转换为神经网络中的一组权重和阈值。对于该算法,我在想我的神经网络将有 2 个输入神经元(一个用于每个 x 坐标,一个用于 y),然后是一个带有两个神经元的隐藏层,然后是一个带有一个神经元描述的输出层矩形,或不是'。所以这是一个全连接的网络?

我在想我希望形状内的值是:

1 ≤ x ≤ 2 (I want x to be between 1 and 2) AND
1 ≤ y ≤ 3 (I want y to be between 1 and 3)

但我不明白如何将其实际转换为权重和阈值?我遇到了等式

y = -(Wx/Wx)x - (Wb/Wy) 

...但是在这种情况下没有 y 值,我不确定这是如何应用的?我想解决这个例子,但使用一种适用于其他形状(例如立方体或三角形)的方法。

更新 1:类似于手动为 AND/NOT 等门绘制感知器的方式,我想手动将 2D 形状转换为 NN,以便我可以理解该过程。

因此,此刻我有一个具有三个输入节点(X、Y 和 B)的 NN,以及一层中有四个隐藏节点(每个矩形线一个)。但是给定一个矩形,我不知道如何求解直线方程(3,3)(3,6),因为斜率未定义(6-3/3-3),所以我不知道如何插入 y=-Wx/Wy(x) - Wb/Wy 来计算权重和偏差。

标签: algorithmneural-network

解决方案


对于单层感知器,您将需要四个神经元。假设您使用 Heaviside 函数作为您想要的激活函数,

y1=numpy.heaviside(x1-1,1)
y2=numpy.heaviside(2-x1,1)
y2=numpy.heaviside(x2-1,1)
y3=numpy.heaviside(3-x2,1)
y=y1+y2+y3+y4
z=numpy.heaviside(y-4,1) 

x1x2是输入;z是输出,如果一个点在正方形内,则为 1,否则为 0。


推荐阅读