最近入门神经网络,遇到个问题想请教一下

2019-07-26 15:21:59 +08:00
 BBrother

最简单的神经网络是单层神经网络(没有隐藏层),单层神经网络如果只有一个输出节点,那么可以称为感知器(好像也有单层神经网络就是感知器的说法?)

我的问题是这样的:

有多个输出节点的单层神经网络也是只能做线性分割吗?比如鸢尾花的数据集,可以通过一个输出节点判断是不是某种鸢尾花,那么我只要用 3 个输出节点是不是就能判断数据集里的 3 种鸢尾花了?

那么对于异或运算

https://i.loli.net/2019/07/26/5d3aa925e109111365.jpg

如果一个输出节点能画一条线的话,两个输出节点不就能分割了吗?

1738 次点击
所在节点    问与答
9 条回复
wutiantong
2019-07-26 15:33:11 +08:00
没问题啊
wqzjk393
2019-07-26 15:41:56 +08:00
多输入一输出,理论上是能分割两种类别,一个是输入的加权和通过激活函数以后的值 a,另一个则是 1-a,那么判断 a 和 1-a 的大小就可以定义分到哪一类了(这个激活函数如果不用 sigmoid,改用 softmax,那基本上就可以完全理解成输出为某一类的概率了,然后 1-a 就是另外一类的概率了)。
如果你往后继续看的话,就会看到使用 mnist 数据集做手写识别的时候,一般设计最后一层是 10 个神经元分布代表 1 到 10,用 0 和 1 代表是不是这一个分类。当然如果你要想定义 9 个神经元也没问题,就是全 0 的输出的时候定义为某个特定的值罢了,这只是神经网络结构设计上个人选择而已。类似 python 里面的 df.get_dummies,就是删掉一个输出结果,用其他的输出结果组合(例如全零)来表示这个删掉的
wqzjk393
2019-07-26 15:46:00 +08:00
@wqzjk393 10 个神经元分布代表 1 到 10,用 0 和 1 代表是不是这一个分类。
这个说的可能有点问题。。10 个神经元分布代表 0 到 9,用使用这 10 个输出里面最大的的那一个结果作为最后的预测分类。如果你采用 9 个神经元的话,可以定义一个 threshold 值,如果 9 个输出都小于这个值,那么就认为是最后那个分类。
Vinty
2019-07-26 16:07:20 +08:00
不能的吧,单层神经网络多个输出节点它也仍然是一个线性分类器。你说的画两条线,输出节点对应的并不是最后的分类结果,实际上就是隐含层。
Philippa
2019-07-26 16:24:47 +08:00
看看 PyTorch 的官方视频教程免费的,质量非常高。大部分都有英语字幕,少部分含中文字幕。
BBrother
2019-07-26 17:08:26 +08:00
@wqzjk393 您说的这个我能理解,但是我想知道的是,输入直接到输出(多个输出节点的)神经网络为什么只能用来线性分类呢?


@Vinty 是这样吗?😂
013231
2019-07-26 17:44:24 +08:00
就以异或那个例子来说, 你的两个输出节点画出了两条线, 那分类结果到底是看那条线?

你的想法大概是, 一条线把数据分成了(上, 下)两类, 另一条线把数据分成了(左, 右)两类, 然后我们可以判断(上右, 下左)是红, (上左, 下右)是蓝.

但这样一来, 分类过程实际上根本不是由神经网络完成的, 是在你知道分类方法的前提下手写出来的. 神经网络只是按上下左右对数据分类, 这种分类方式确实可以由线性分类器实现.
TobiahShaw
2019-07-26 17:52:40 +08:00
感觉楼主说的输出多条线就不是单层感知机,就示例那张图来讲,可以用 SVM 来弄两条 margin。单就楼主说的” 3 个输出节点“,拿结果应该是特征的另一种表示形式,而不是分类结果。
BBrother
2019-07-26 18:38:23 +08:00
@TobiahShaw
@013231

好吧,大概理解了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/586455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX