机器学习——边角料

来源:互联网 发布:ubuntu安装perl模块 编辑:程序博客网 时间:2024/06/04 18:24

算法设计的一大原则

sophisticatedalgorithmsimplelearningalgorithm+goodtrainingdata.

sigmoid型函数

σ(z)=11+exp(z)

注意一点,在神经网络引入sigmoid型函数的目的是避免,对权重一个微小的改变可能对输出带来的显著的改变,这一情况的发生(以此我们来进行微调)。σ()完美地将整个实数域的值映射到(0,1)区间(对应着概率probability?)。

何谓向量化一个函数(vectorizing a function )

也即是将函数作用于向量中的每一个元素得到的输出再组合成一个向量。举例说明:

a=σ(wa+b)

其中w是一个二阶权值矩阵(代表前后两个layer中的神经元之间的权重),a是一个向量(表示前一层每一个神经元的输出组成的向量),b表示上一层向下一层的偏置,σ()sigmoid型函数

def sigmoid(z):
return 1/(1+np.exp(-z))
# 此时sigmoid接收的是一个向量,sigmoid(z)的做法正是一种vectorize 的做法
a = sigmoid(w.dot(a)+b)

  1. 单层神经网络的增广(augmentation)形式


    这里写图片描述

    z=w1x1+w2x2++wdxdϕ(z)={0ifzθ1ifz>θ

    为了形式的简单和统一,可将上式转换如下形式:

    z===θ+w1x1+w2x2++wdxdw0x0+w1x1++wdxdwTx

    也即是:

    x1x2xddx0x1x2xdd+1

    w1w2wddw0w1wdd+1

    ϕ(z)={0ifzθ1ifz>θ

    转换后的形式是原来形式的增广形式,即分别对特征向量x和权值向量做一维的增广,w0=θ,x0=1

  2. neuron单输出还是多输出?

    答案是单输出(single output)


    这里写图片描述

    通常我们看到的关于多层感知机(perceptron)网络的图示如上图。然而,这样的图有一种“迷惑性的”一点是,对于每一个神经元节点(neuron)而言,它们都是多输入和单输出,虽然从一个神经元出来的箭头指向下一层的每一个节点,其实输出的每一个值都是相等的,这样做只是出于一个直观的需要。

  3. 人工神经元从perceptron到sigmoid neuron


    这里写图片描述

    引入sigmoid neuron(S型神经元)的目的是避免对权值(w1,,wd)或者偏置(bias,w0)的小幅修改可能对最终的输出造成的比较大的变化,比如分类问题中,将-1判断为1,手写识别例子中将8错分为9

    z=wTxσ(z)=11+ez

    σ()实现了原始输入(,)(0,1)的映射(map),实现了一种值域的收缩,也可实现降低输入(weigts、bias)的小幅修改对输出可能造成的影响,如此我们可放心地调整参数,实现更优的结果,而不会出现,因输入的变化可能造成的结果的跳变。

0 0
原创粉丝点击