体验DNN演示平台《A Neural Network Playground》(一)

0 本次博客内容简介

本次博客标(一),是因为我自知有些地方还是不理解。本篇博客仅暂时记录第一次玩 A Neural Network Playground的体验,如果后面有了进一步体会,会更新新的内容的。

地址是: A Neural Network Playground

现在说一下目前我个人体验。

1 我已经了解的地方

(1)线的粗细代表相应的神经元的权重。线越粗,代表连线左边的神经元的地位越重要,它输出的激活值将占据连线右边神经元接收的总激活值中的绝大部分。

(2)每一个神经元上面的图案代表该神经元输出了什么,这相当于单个神经元输出激活值可视化吧。当这些被输出的不同激活值按照不同比重被一层一层叠加起来,最终在output层将输出我们想要的结果。

(3)右上角的函数曲线分别绘出了训练集和测试集在当前网络下的损失loss,可以通过观察这幅图来判断到底误差函数能不能收敛。 

(4)对于分类实验,数据集有四种(如左上角);对于回归实验,数据集有两种(图中未画出)。想切换“分类”和“回归”模式,见上方“Problem Type”。

(5)对于激活函数,有四种可供选择,可以是tanh,也可以是我们所熟悉的sigmoid。切换见上方“Activation”。

(6)神经网络的层数、每一层的神经元个数都是可以任意变更的,可以随便玩。

(7)在左侧“Ratio of training to test data”可以调训练集和测试集的比重,在右侧结果输出中,默认显示的是训练集的点,如果我们想查看测试集的点是否正确落在分类后的区域中,在下方把“Show Test Data”的勾打上,这样测试集的点就出来了,如图,这里我给出的是“训练集:测试集=1:9”的情况,有黑色边框的这些点都是测试集的点,有白色边框的点则是训练集的点:

2 我还不了解的地方

(1)最大的问题在于input中那几个神经元的选择。

通过实验可以发现,如果选择其中一个或两个,则很可能最终导致误差函数不收敛;如果把七个input层的神经元全部选中,则最终的结果95%能收敛。

但是这些输入层的神经元代表什么呢?为什么输入层会出现sinx,x2这些函数呢?难不成意思是对于输入的数据首先要代入sinx和x2,然后才输入网络吗?这样做有什么好处?

 

(2)在本playground中,权值w用线的粗细已经说明,不过偏置b没有提及。

是否意味着没有偏置,或者偏置在里面不再重要?

(3)不明白神经网络如何用于回归(regression),这个也是接下来我应该重点研究的内容。

(4)不明白regularization是什么,是否是大家口中的“正则化”?正则化具体又该怎么用呢?

3 总结

该平台可以随意点击随意调,相当于“玩神经网络”,给人以最直观的“随着迭代次数(iteration)增加,误差(loss)逐步减小,分类结果逐渐浮现”的体验。

2016-05-08

by 悠望南山

原文地址:https://www.cnblogs.com/NanShan2016/p/5470568.html