从感知器到神经网络

从感知器到神经网络


感知器(Perceptron)

最近写了一些简单感知器实现NLP任务的代码,对感知器算是掌握了。

感知器就是一个根据输入 x x x,输出 h ( x ) = s g n ( w   ˙ x + b ) h(x)=sgn(w\dot \ x+b) h(x)=sgn(w ˙x+b)的神经元。
因为感知器只有input layer和一个神经元的output layer,所以一个感知器只能处理一个本质feature或者做一个二分类。

训练感知器可以使用随机梯度算法,但是 h ( x ) h(x) h(x)数学性质不够好,所以改成 h ( x ) = σ ( w   ˙ x + b ) h(x)=\sigma(w\dot \ x+b) h(x)=σ(w ˙x+b),其中 σ ( x ) \sigma(x) σ(x)是一个激活函数,其实这样一来单个感知器可以用于Logistic回归。在Logistic回归中讨论过激活函数的使用,一个最大似然估计是 σ ( x ) = s i g m o i d ( x ) \sigma(x)=sigmoid(x) σ(x)=sigmoid(x),当然如果输出不在 ( 0 , 1 ) (0,1) (0,1)内而在 ( − 1 , 1 ) (-1,1) (1,1)内,可以使用 σ ( x ) = t a n h ( x ) \sigma(x)=tanh(x) σ(x)=tanh(x)(事实上这个函数仅仅通过 s i g m o i d ( x ) sigmoid(x) sigmoid(x)平移伸缩变换就可以得到)。反正激活函数的使用是很有讲究的,但是我不太懂具体细节,知道这是一个最大似然估计的结果就好了。

还有一种朴素的训练方法就是如果输出正确则不更改权重,否则认为这一次输入对应的权重估计有问题,所以直接在权重中减去对应输入分量。虽然这是一个土办法,但是如果输入也是feature的有无0/1,我们经常会用,但方法没有一个名称,后来才知道这是梯度随机算法的一个特例,梯度直接使用输入这一个数据估计,叫在线算法或者增量算法。


感知器网络(Perceptron Net)

如果有多分类问题,可以配置多个感知器感知每一个类别,输出它们的最大值就是所属的类别。

因为最大值的数学性质不好,所以我训练就直接用类似训练感知器的在线算法处理:对于正确预测不做处理,预测错误则惩罚错误的最大值感知器对应权重,给正确的感知器对应权重增益。

事实上,如果要用随机梯度算法来处理感知器网络训练,可以认为感知器网络是一个hidden layer,那么output layer是一个与hidden layer一样大,但是做了一个softmax,(softmax之所以是softmax,因为看起来它的表达式和max没联系,但事实上在指数较大时候就趋向于一个max函数)


神经网络(Neural Networks)

神经元是神经网络的基础,而神经元和感知器原理非常类似。

s g n ( x ) 类 似 于 s i g m o i d ( x ) , m a x ( x ) 类 似 于 s o f t m a x ( x ) , 判 断 是 否 相 同 类 似 于 代 价 函 数 , 调 整 权 重 算 法 类 似 于 随 机 梯 度 算 法 sgn(x)类似于sigmoid(x),max(x)类似于softmax(x),判断是否相同类似于代价函数,调整权重算法类似于随机梯度算法 sgn(x)sigmoid(x)max(x)softmax(x)

神经元所用的函数一般连续有梯度,感知器在某些任务中变量和函数可以离散不连续。神经网络可以配置多层,每一层以前一层所有神经元输出作为输入。代价函数除了L2范数,还有交叉熵等代价函数。神经网络训练简单地可以用随机梯度算法,BP算法之类的。但是如果层数太多会遇到梯度消失的问题。

神经网络还可以把后层的输出重新给前层输入,就是RNN,神经网络处理图像或者NLP中的文本时候考虑context和phrase信息时候需要卷积,就是CNN。当然还有LSTM,bi-LSTM等高级形态…


最后

不知道神经网络入门的正确方法是不是感知器,反正我是通过感知器入门神经网络的。感知器代码我手写了一下,感觉还是理解了。从感知器到神经网络感觉过渡比较自然,有一种原来是这样的感觉。

写了简单的神经网络的代码,感觉神经网络下标比较复杂,所以熟练使用numpy矩阵运算和各种技巧可以避免代码冗长易错。而且有必要学习tensorflow之类的。

但是我感觉我的学习进度有点慢了,寒假和最近在HMM,感知器上写了太多东西了,也没有加深多少理解,但是耗费了很多时间。所以下一阶段多看书,多理解理论,代码适当少写,加快学习进度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值