美文网首页
最最naive的神经网络

最最naive的神经网络

作者: doraTrager | 来源:发表于2019-12-18 13:46 被阅读0次

    学习笔记,可能有些谬误,请批判性阅读。

    凡事由简入繁,搞清楚最为basic的NN(神经网络),就像拥有了一把可以随身携带的匕首,遇事有防身的,再去见识各种各样的NN,不怕。

    结构

    我们构建一个最简单的NN,来进行一个二分类预测。

    具体地任务是,用户是否会网购猫砂的二分类预测。每个用户是一个样本,刻画用户有三维特征:用户是否拥有一只猫、是否喝进口饮料、是否浏览过我们的网站。用这三维特征表示一个用户,经过NN后,产出一个概率值,进行该用户是否会购买猫砂的二分类预测。

    仅有一个隐层的神经网络

    输入层l1

    输入m个样本,每个样本是一个三维向量,于是输入:

    X=W_{m\times 1\times 3}

    可以看到,l1有3个神经元,分别代表每个样本的每个维度值。

    隐层l1

    这一层有4个神经元,与l0进行了全连接,也就是l1的4个神经元与l0的3个神经元两两相连。因此,我们管l1叫做全连接层。

    这样,从l0映射到l1需要一个3*4的连接矩阵。

    syn0=W_{3\times 4}

    NN中需要非线性激活函数(active),来引入非线性因素,使NN在前向传导的过程中可以进行复杂的映射。(如果没有非线性映射,多层网络的线性映射,单层线性映射就可以实现,深度网络也成为无稽之谈。)

    l1=active(l0\times syn0)

    输出层l2

    输出层只有一个神经元,因此,从l1映射到l2的全连接,依仗一个4*1的连接矩阵实现。

    syn1=W_{4\times 1}

    同样的,进行非线性激活。

    l2=active(l1\times syn1)

    这样,输入经过隐层,来到输出层,最后输出的结果为:

    Y=W_{m\times 1\times 1}

    对每个样本,输出结果为1\times 1的向量。

    落地

    上面介绍的实际上是前向传播的过程。后向传播的细节,这里就不介绍了,大家可以看引用[1]仔细研究。

    后向传播,最广泛使用的是梯度下降法。根据误差,通过求导计算各参数的变化量。具体怎么实现,需要推导求导公式等等,从代码里再理解一下吧。[手动捂脸]

    import numpy as np
    
    # sigmoid函数一阶导数:f'(x)=f(x)(1-f(x))
    def derive(x):
        return x * (1 - x)
    
    # 激活函数,l1 & l2都采用sigmoid
    def active(x):
        return 1 / (1 + exp(x))
    
    # 输入4*3*1,这里m=4
    x = [
            [1, 0, 1],
            [1, 1, 1],
            [1, 0, 0],
            [0, 0, 1],
        ]
    
    # 真实值4*1*1,这里m=4
    y = [[1], [0], [1], [0]]
    
    # 连接矩阵随机初始化
    np.random.seed(1)
    syn0 =  np.random.random((3,4))
    syn1 = np.random.random((4,1))
    
    l0 = x
    for j in range(0, 60000):
        # 前向传导
        l1 = active(np.dot(l0, syn0))
        l2 = active(np.dot(l1, syn1))
        # 后向传播
        l2_error = y - l2
        l2_delta = l2_error * deriv(l2)
        l1_error = l2_delta.dot(syn1.T)
        l1_delta = l1_error * deriv(l1)
        # 更新参数
        syn1 += l1.T.dot(l2_delta)
        syn0 += l0.T.dot(l1_delta)
    
    # 训练完成,打印当前预测值。
    print l2
    

    参考

    [1] https://mp.weixin.qq.com/s/nO49e-cX17y0Mry-HKY2wQ

    相关文章

      网友评论

          本文标题:最最naive的神经网络

          本文链接:https://www.haomeiwen.com/subject/tgxunctx.html