从感知器到神经网络
来源:互联网 发布:阿克苏怎样优化网站 编辑:程序博客网 时间:2024/05/16 15:26
从感知器到神经网络
感知器(Perceptron)
最近写了一些简单感知器实现NLP任务的代码,对感知器算是掌握了。
感知器就是一个根据输入
因为感知器只有input layer和一个神经元的output layer,所以一个感知器只能处理一个本质feature或者做一个二分类。
训练感知器可以使用随机梯度算法,但是
还有一种朴素的训练方法就是如果输出正确则不更改权重,否则认为这一次输入对应的权重估计有问题,所以直接在权重中减去对应输入分量。虽然这是一个土办法,但是如果输入也是feature的有无0/1,我们经常会用,但方法没有一个名称,后来才知道这是梯度随机算法的一个特例,梯度直接使用输入这一个数据估计,叫在线算法或者增量算法。
感知器网络(Perceptron Net)
如果有多分类问题,可以配置多个感知器感知每一个类别,输出它们的最大值就是所属的类别。
因为最大值的数学性质不好,所以我训练就直接用类似训练感知器的在线算法处理:对于正确预测不做处理,预测错误则惩罚错误的最大值感知器对应权重,给正确的感知器对应权重增益。
事实上,如果要用随机梯度算法来处理感知器网络训练,可以认为感知器网络是一个hidden layer,那么output layer是一个与hidden layer一样大,但是做了一个softmax,(softmax之所以是softmax,因为看起来它的表达式和max没联系,但事实上在指数较大时候就趋向于一个max函数)
神经网络(Neural Networks)
神经元是神经网络的基础,而神经元和感知器原理非常类似。
神经元所用的函数一般连续有梯度,感知器在某些任务中变量和函数可以离散不连续。神经网络可以配置多层,每一层以前一层所有神经元输出作为输入。代价函数除了L2范数,还有交叉熵等代价函数。神经网络训练简单地可以用随机梯度算法,BP算法之类的。但是如果层数太多会遇到梯度消失的问题。
神经网络还可以把后层的输出重新给前层输入,就是RNN,神经网络处理图像或者NLP中的文本时候考虑context和phrase信息时候需要卷积,就是CNN。当然还有LSTM,bi-LSTM等高级形态…
最后
不知道神经网络入门的正确方法是不是感知器,反正我是通过感知器入门神经网络的。感知器代码我手写了一下,感觉还是理解了。从感知器到神经网络感觉过渡比较自然,有一种原来是这样的感觉。
写了简单的神经网络的代码,感觉神经网络下标比较复杂,所以熟练使用numpy矩阵运算和各种技巧可以避免代码冗长易错。而且有必要学习tensorflow之类的。
但是我感觉我的学习进度有点慢了,寒假和最近在HMM,感知器上写了太多东西了,也没有加深多少理解,但是耗费了很多时间。所以下一阶段多看书,多理解理论,代码适当少写,加快学习进度。
- 从感知器到神经网络
- 从感知机到人工神经网络
- 机器学习系列:(十)从感知器到人工神经网络
- 机器学习系列:(十)从感知器到人工神经网络
- 从双层感知机到BP神经网络的Delta规则
- 从感知机到神经网络:Python实现与测试
- 神经网络和深度学习简史1-从感知机到BP神经网络
- 从感知机到BP神经网络,简单BP神经网络的实现
- 感知器和神经网络
- 单层感知器神经网络
- 感知器神经网络
- 感知器 人工神经网络
- 神经网络模型:感知器
- BP神经网络-感知器
- 神经网络-感知器
- 深度|神经网络和深度学习简史(第一部分):从感知机到BP算法
- 神经网络和深度学习简史(第一部分):从感知机到BP算法
- 神经网络基础和感知器
- vuex快速上手
- 初探JVM堆内存
- OpenGL中如何实现通过鼠标点击选取对象(正交投影)
- Java中实现深拷贝的方法—学习笔记
- 从cobar到mycat的基本使用
- 从感知器到神经网络
- cordova学习五 真机调试
- HDU 2020 JAVA
- 伯努利分布(Bernoulli distribution)
- Android Based control -- CBAlignTextView
- Java泛型详解
- Supervisor重新加载配置启动新的进程
- 1012 太繁琐,写的太差
- [IOS APP]简爱跑步12周