E**********e 发帖数: 1736 | 1 在学neural network,简单的forward-feed 两层结构。 通晓了基本概念,像error
back propogation。 现在通过一个网上找来的列子在学习https://github.com/
dennybritz/nn-from-scratch,加深理解。但是run code的低时候,对输出层的error
的计算有点问题。
这个例子是个binary class 问题。 每个observation的target 是 0/1。当然这种类型
的问题可以用一个输出,然后预测的target就用一个logistic sigmoid来计算,然后算
cross-entropy error function function。 但是在这个例子用的是softmax 来计算,
也就是有输出有两个。 从开始到计算输出的两个值都好理解,也明白里面的algorithm
. 就是在计算输出值很target的差或erro是有点问题。 比如最后五个obervations通过
softmax的计算得到的概率是。
y_hat=
[ 0.67664077, 0.32335923],
[ 0.46837054, 0.53162946],
[ 0.51426894, 0.48573106],
[ 0.67241636, 0.32758364],
[ 0.47552597, 0.52447403]
这是个二维数组,这可以理解,因为是有两个输出nodes。 但是targt是一维的
y=[0, 1, 1, 0, 1].
这个作者处理的时候用了
delta3[range(num_examples), y] -= 1,结果类似
y=
[1, 0],
[0, 1],
[0, 1],
[1, 0],
[0, 1]]
然后输出值减去真实值y_hat-y, 得到结果是
[-0.32335923, 0.32335923],
[ 0.46837054, -0.46837054],
[ 0.51426894, -0.51426894],
[-0.32758364, 0.32758364],
[ 0.47552597, -0.47552597]
我的问题是怎么从一维的target转换成两维对应的值,正确的进行delta=y_hat-y.
我试了先交换y的columns, 变成
y=
[0, 1],
[1, 0],
[1, 0],
[0, 1],
[1, 0]]
结果迭代的时候得不到结果。
不知诸位看明白了没? 啰嗦了半天。 我就是想不明白,在binary class, 输出是两
个值, 怎样才能正确的把target变量coding 成两维?
谢谢。 | m******r 发帖数: 1033 | 2 神经网络,我看也是有一堆回归构成的。 无知者无畏啊,说的不对还请指教。
每个neuron也没什么实际意思,就是回归。
不知道为什么功能这么强大。 | l******8 发帖数: 1691 | 3 这个两维自由度还是一啊,和一维一样的。
error
algorithm
【在 E**********e 的大作中提到】 : 在学neural network,简单的forward-feed 两层结构。 通晓了基本概念,像error : back propogation。 现在通过一个网上找来的列子在学习https://github.com/ : dennybritz/nn-from-scratch,加深理解。但是run code的低时候,对输出层的error : 的计算有点问题。 : 这个例子是个binary class 问题。 每个observation的target 是 0/1。当然这种类型 : 的问题可以用一个输出,然后预测的target就用一个logistic sigmoid来计算,然后算 : cross-entropy error function function。 但是在这个例子用的是softmax 来计算, : 也就是有输出有两个。 从开始到计算输出的两个值都好理解,也明白里面的algorithm : . 就是在计算输出值很target的差或erro是有点问题。 比如最后五个obervations通过 : softmax的计算得到的概率是。
| l******8 发帖数: 1691 | 4 要说回归也可以啊。但是相当于会自动生成基函数,去高维空间拟合很多features.
不需人自己去造feature试来试去。
【在 m******r 的大作中提到】 : 神经网络,我看也是有一堆回归构成的。 无知者无畏啊,说的不对还请指教。 : 每个neuron也没什么实际意思,就是回归。 : 不知道为什么功能这么强大。
| p********4 发帖数: 2 | 5 我的理解,不知道是否符合你的题目:
target y是一维的没错,这个应该是原来题目里给出来的,所以原作者进行了假设,用
输出层node0表示了输出为0,node1表示了输出结果为1,所以以上输出结果的二维表示
target=0 -> [1, 0] 以此类推。这里的[1,0]表示的是True/False。所以根据
log regression的计算,第三组[0.51 0.49]本来应该是输出为[1,0],但实际给
出的结果是[0,1],这就是误差,来计算miss rate。所以可以判断这组weight在神
经网络里的优劣来进行feed back。
抛砖引玉了。 | E**********e 发帖数: 1736 | 6 对,从原作者的code来说, 我也是这样理解的。 问题是为是么node0 就是对应的“0
”态, 而不是反过来? 我好像找不到相关的资料来说明这个事情。 如果我交换了一
下, node0看成是1 的话, 原code就不能得到正确迭代。
【在 p********4 的大作中提到】 : 我的理解,不知道是否符合你的题目: : target y是一维的没错,这个应该是原来题目里给出来的,所以原作者进行了假设,用 : 输出层node0表示了输出为0,node1表示了输出结果为1,所以以上输出结果的二维表示 : target=0 -> [1, 0] 以此类推。这里的[1,0]表示的是True/False。所以根据 : log regression的计算,第三组[0.51 0.49]本来应该是输出为[1,0],但实际给 : 出的结果是[0,1],这就是误差,来计算miss rate。所以可以判断这组weight在神 : 经网络里的优劣来进行feed back。 : 抛砖引玉了。
| E**********e 发帖数: 1736 | 7 当然,也不要认为我扣这些字眼。弄清楚的原因是自己有可能写code。 这里弄不清,
就不能使得code 正确收敛。
0
【在 E**********e 的大作中提到】 : 对,从原作者的code来说, 我也是这样理解的。 问题是为是么node0 就是对应的“0 : ”态, 而不是反过来? 我好像找不到相关的资料来说明这个事情。 如果我交换了一 : 下, node0看成是1 的话, 原code就不能得到正确迭代。
| m******r 发帖数: 1033 | 8 你干嘛要自己写code. 现成的package不好么?
除非你写的比现成的还好。
,
【在 E**********e 的大作中提到】 : 当然,也不要认为我扣这些字眼。弄清楚的原因是自己有可能写code。 这里弄不清, : 就不能使得code 正确收敛。 : : 0
| E**********e 发帖数: 1736 | 9 不写自己的code,怎么能深刻理解这些个算法?
:你干嘛要自己写code. 现成的package不好么?
:除非你写的比现成的还好。 | E**********e 发帖数: 1736 | 10 弄清楚了。 在多个输出nodes时,哪一个class在前还是后,不要紧,只要每一个对应
的class coding一致就行。在这个例子里,原先一维的这是class,放在第一column还
是第二column,不要紧,coding时,(y,1-y)一致对应就行。
:我的理解,不知道是否符合你的题目:
: | m******r 发帖数: 1033 | | s******y 发帖数: 8 | 12 楼主对于知识的态度值得学习,理解算法运作原理不是必须的,但绝对是锦上添花 | A*******e 发帖数: 284 | 13 我也碰到类似的学习问题,就是想知道运作原理后能自己从头实现一遍,底子薄不容易。
感觉如果就是把package拿来用,折参数调整layer和node,学的总是不深。下面这个
youtube对我帮助很大
https://www.youtube.com/watch?v=aVId8KMsdUU |
|