专栏首页ATYUN订阅号【学术】从零开始,教你如何编写一个神经网络分类器

【学术】从零开始,教你如何编写一个神经网络分类器

高水平的深度学习库,如TensorFlow,Keras和Pytorch,通过隐藏神经网络的许多乏味的内部工作细节,使深度学习从业者的生活变得更容易。尽管这是深度学习的好方法,但它仍然有一个小缺点:让许多基础理解较差的新来者在其他地方学习。我们的目标是提供从头开始编写的一个隐藏层全连接神经网络分类器(没有深度学习库),以帮助消除神经网络中的黑箱。

项目地址:https://github.com/ankonzoid/NN-from-scratch

所提供的神经网络对描述属于小麦的三类内核的几何属性的数据集进行分类(你可以轻松地将其替换为自己的自定义数据集)。假设有一个L2损失函数,并且在隐藏和输出层中的每个节点上使用sigmoid传递函数。权值更新方式使用具有L2范数的梯度下降的差量规则。

本文的其余部分,概述了我们的代码为构建和训练神经网络进行类预测所采取的一般步骤。关于深度学习和强化学习的博客,教程和项目,请查看Medium和Github。

Medium地址:https://medium.com/@ankonzoid Github地址:https://github.com/ankonzoid

我们逐步建立单层神经网络分类器

1.设置n次交叉验证

对于N次交叉验证,我们随机地排列N个样本指标,然后取连续大小为~ N/ n的块作为折叠。每个折叠作为一个交叉验证实验的测试集,补码(complement )指标作为训练集。

2.创建和训练神经网络模型

我们有2个完全连通的权值层:一个连接输入层节点与隐藏层节点,另一个连接隐藏层节点与输出层节点。如果没有任何偏项,这应该是神经网络中权值数量的总和(n_input *n_hidden + n_hidden* n_output)。我们通过对正态分布进行采样来初始化每个权值。

每个节点(神经元)具有存储到存储器中的3个属性:连接到其输入节点的权重列表,由正向传递的一些输入计算得到的输出值,以及表示其输出的反向传递分类不匹配的增量值层。这3个属性是相互交织的,并通过以下三个过程循环进行更新:

(A)正向传递一个训练示例,以更新当前给定节点权值的节点输出。每个节点输出被计算为其上一层输入(无偏项)的加权和,然后是sigmoid传递函数。

(B)反向传递分类错误,以更新当前给出节点权值的节点增量。因为我们使用从L2损失函数应用梯度下降导出的相同的增量规则方程。

(C)我们通过更新节点输出和增量来执行正向传递以更新当前的权值。

训练周期过程为(A)→(B)→(C),对每个训练样本执行该过程。

3.进行类预测

在训练之后,我们可以简单地使用这个模型来对我们的测试样本进行类预测,方法是将文本示例传递给经过训练的神经网络,获取输出的argmax函数。准确性分数是示例(在训练和测试集的n倍交叉验证中)数量的直观分数,在该示例中神经网络分类正确地除以了样本总数。

本文分享自微信公众号 - ATYUN订阅号(atyun_com),作者:xiaoshan

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 适合初学者学习的神经网络:流行类型和应用

    目前,神经网络被用于解决许多商业问题,如销售预测、客户研究、数据验证和风险管理。更进一步讲,我们能够使用神经网络进行时间序列预测、数据中的异常检测和自然语言理解...

    AiTechYun
  • 【学术】在机器学习中经常使用的6种人工神经网络

    人工神经网络是是类似于人类神经系统功能的计算模型。有几种人工神经网络是基于数学运算和确定输出所需的一组参数来实现的。让我们来看看吧: ? 1.前馈神经网络-人工...

    AiTechYun
  • 深度学习不只是“Import Tensorflow”(下)

    上一部分我们通过努力得到了一个不错的基本神经元,今天我们将会得到一个不同的线性模型!

    AiTechYun
  • BP神经网络

    BP(Back Propagation)神经网络是1986年由以Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前...

    企鹅号小编
  • BP神经网络

    BP(Back Propagation)神经网络是1986年由以Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前...

    瓜大三哥
  • 机器学习(十一) ——神经网络基础

    机器学习(十一)——神经网络基础 (原创内容,转载请注明来源,谢谢) 一、概述 神经网络,可以理解为输入的内容,经过一系列的内部的处理,得到输出的假设函数。简...

    用户1327360
  • 第14问:在 MGR 集群里,一个节点异常退出后,会发生什么?

    在一个 MGR 集群里,一个节点异常退出后,MySQL 会如何进行调度?异常的节点什么时候会被踢出集群?

    爱可生开源社区
  • 分布式任务调度组件 LTS 用户文档

    LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务。有较好的伸缩性,扩展性,健壮稳定性而被多...

    高广超
  • 一篇文章搞懂机器学习中决策树的那些事儿

    所有的机器学习算法中,决策树应该是最友好的了。它呢,在整个运行机制上可以很容易地被翻译成人们能看懂的语言,也因此被归为“白盒模型”。

    讲编程的高老师
  • flink1.7自定义source实现

    数据的来源是flink程序从中读取输入的地方。我们可以使用StreamExecutionEnvironment.addSource(sourceFunction...

    intsmaze-刘洋

扫码关注云+社区

领取腾讯云代金券