我想实现一个神经网络,用于猜测用户会选择“真”还是“假”。
最合适的设计是什么?我在这方面是新手,但我想到了以下设计:
设有128个输入,用于存储之前的128次猜测(可以理解为记忆)。
第一个输入是最新的猜测,第二个是前一次,第三个是两轮之前,以此类推。
我考虑设置一个包含256个节点的全连接隐藏层,以及一个用于输出的单一最终层。
我会这样表示我的输入:0 – 尚未猜测,0.5 – 猜测为假,1 – 猜测为真
输出值如下:0表示假,1表示真(当输出变为输入时,我会将其转换为输入格式)
现在,我对这个设计的主要担忧是输入是移动的。也就是说,第一次猜测时的第一个输入,在下一次猜测时会变成第二个输入,再下一次会变成第三个输入,我担心这会导致没有可重用性,逻辑会重复,猜测结果会变得非常固化。
我的担忧是否毫无根据?我是否应该让神经网络替我思考,仅此而已?
我记得我在YouTube上看到过关于神经网络记忆的视频,提到可以逐一输入数据。这是否意味着我的方法是错误的,神经网络的记忆有特殊的方式?
如果我的设计是错误的,你会建议什么样的设计?
回答:
首先,你应该问问自己为什么想要使用神经网络。你是否尝试过更简单的模型(参数更少),例如隐马尔可夫模型?你是否有足够的数据来训练一个多层的网络?
假设你确定要使用神经网络,那么我们应该从输入开始。你的输入是一个分类特征,因此应该以一种合适的方式进行编码。一种常见的编码方法是独热编码。所以在你的案例中,输入会看起来像这样:
NYG = [1, 0, 0]T = [0, 1, 0]F = [0, 0, 1]
一旦你格式化了输入数据,你就可以考虑网络架构。虽然解决每个问题的方法有很多,但听起来你可能想使用循环神经网络,它可以根据一系列输入输出分类。我建议从几个较小的LSTM单元层(64个节点)开始,看看效果如何,然后再考虑如何扩展(如果你有足够的数据)。
我真的不能强调太多,你不应该轻易跳入神经网络。它们可能非常有用,也可能在不需要的地方增加巨大的混乱。