【火炉炼AI】深度学习001-神经网络的基本单元-感知器

(本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

在人工智能领域,深度学习已经脱颖而出,越来越成为大型复杂问题的首选解决方案。深度学习相对传统机器学习的区别主要在于,使用模拟人类大脑的神经网络来构建模型。早期的浅层次神经网络也可以认为是机器学习领域的一个分支,但是目前,由于神经网络的层次不断加深,参数越来越复杂,能够的解决实际问题越来越多,研究神经网络,特别是深度神经网络的文章越来越多,故而深度学习被划分到一个单独的分支中。

1. 感知器简介

为了更好的理解神经网络,我们首先来看看神经网络的基本组成单元-神经元,神经元是生物学的术语,在计算机领域,我们称之为感知器。

感知器是一种早期的神经网络模型,由美国学者F.Rosenblatt于1957年提出.感知器中第一次引入了学习的概念,使人脑所具备的学习功能在基于符号处理的数学到了一定程度模拟,所以引起了广泛的关注。

感知器的结构:

1,输入:一个感知器有一个或多个输入,用于接收特征数值。

1,权重:每个输入都有一个权重,表示该输入对结果的影响力。

2,偏置:虽然权重能够表示该输入对结果的影响力,但为了更好的拟合结果,有时还需要对输入进行左右移动,即平行地增大或减小,故而有了偏置。

3,输出:经过计算后会给出一个或多个输出。

通俗一点来理解,感知器就像一个复杂一点的函数y=f(u,v),其中的u,v就是输入的特征数值,f表示权重和偏置的组合方式,也就是计算过程,y为输出。所以可以用下列公式来表示感知器。

其中的x表示输入,w为权重,sita为偏置,f则为激活函数,v为输出。所以,完全可以将感知器理解成一个复杂一点的函数。

2. 感知器的训练

如果我们要用一条直线拟合一系列数据,假设该直线的方程为y=a*x+b,那么,我们要做的就是计算出最合适的a和b即可。同理,由于感知器的函数中有两个未知变量(权重和偏置),故而,我们要做的就是计算出最合适的权重和偏置,这一计算过程就是感知器的训练。

感知器的训练是基于感知器规则的,感知器规则认为,如果样本输入函数是线性可分的,那么感知器学习算法经过有限次迭代之后,便可以收敛得到正确的权值和偏置,也就是说,不管开始时权重和偏置是多少,经过N次迭代后,总能得到唯一的确定的权重和唯一的确定的偏置。这也就是为什么我们在初始时设置权重和偏置为随机数或0的原因。

感知器的训练过程可以简单概括为:在训练时,每次从训练数据中取出一个样本的输入向量,使用感知器计算其输出,再根据感知器规则来调整权重。每处理一个样本就调整一次权重。经过多轮迭代后(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重,使之实现目标函数。

关于感知器的数学推导和基本理论,可以参考博文:感知器(Perception)

那么,从代码上如何训练感知器了?运行下列代码之前,请先通过pip install neurolab来安装neurolab模块。

首先准备数据集,并将数据集的分布情况显示出来,这部分代码太简单,可以直接看代码。

# 建立感知器模型
import neurolab as nl
perceptron = nl.net.newp([[dataset_X[:,0].min(),dataset_X[:,0].max()], # 指定特征1的最小和最大值[dataset_X[:,1].min(),dataset_X[:,1].max()]], # 特征2的min和max1) # 只有1个感知器
# 为了适合于train,需要将dataset_y处理成二维
dataset_y=dataset_y[:,np.newaxis]
cost=perceptron.train(dataset_X,dataset_y,epochs=50,show=10,lr=0.01)
# 训练该单个感知器,50个回合,每10个回合显示一下训练结果,学习速率为0.01# 显示下训练过程中cost的变化趋势
plt.plot(cost)
plt.xlabel('Number of epochs')
plt.ylabel('Training cost')
plt.grid()
plt.title('Training cost progress')

########################小**********结###############################

1,感知器方面主要是理解其基本的含义和理论知识,因为感知器是神经网络的基本组成单元。

2,感知器的训练在以后的深度学习中用处不大,一般成熟的深度学习框架都已经整合了这部分内容,此处仅仅用于演示。

#################################################################

注:本部分代码已经全部上传到(我的github)上,欢迎下载。

参考资料:

1, Python机器学习经典实例,Prateek Joshi著,陶俊杰,陈小莉译

【火炉炼AI】深度学习001-神经网络的基本单元-感知器相关推荐

  1. 深度学习(神经网络)[1]——单层感知器

    深度学习(神经网络)[1] -- 单层感知器 算法描述 python实现 示例运行结果 可视化 算法描述 最原始的神经网络模型,类似于神经网络中的单个神经元,该算法局限性也很大,只适用于解决线性可分的 ...

  2. 深度学习入门系列1:多层感知器概述

    本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...

  3. 深度学习02-神经网络(MLP多层感知器)

    文章目录 神经网络 简介 学习路径 分类 多层感知器(MLP) 神经网络认识 两层神经网络 输入层 从输入层到隐藏层 从隐藏层到输出层 激活层 输出的正规化 如何衡量输出的好坏 反向传播与参数优化 过 ...

  4. 深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练

    目录 一.基础理论 1.单词感知器介绍 2.单词感知器学习规则 前向传递(得到输出y) 反向传递(更新权重w) 二.实现单层感知器 1.初始参数设置 2.正向传播(得到输出y) 3. 反向传播(更新权 ...

  5. 深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类

    目录 一.基础理论 前向传递(得到输出y) 反向传递(更新权重w) 二.实现多数据分类 1.设置初始参数 2.训练 3.画图 3-1.画点 3-2.画线段 总代码 一.基础理论 这里只写公式,更加详细 ...

  6. 机器学习/深度学习测试题(一) —— 单层感知器的激活函数

    问,更换单层感知器的激活函数(比如改为 tanh\tanh 函数),能否使模型具有解决非线性分类问题的能力. tanh(s)=exp(s)−exp(−s)exp(s)+exp(−s) \tanh(s) ...

  7. 【火炉炼AI】深度学习004-Elman循环神经网络

    [火炉炼AI]深度学习004-Elman循环神经网络 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib ...

  8. 【火炉炼AI】深度学习003-构建并训练深度神经网络模型

    [火炉炼AI]深度学习003-构建并训练深度神经网络模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotl ...

  9. 【火炉炼AI】深度学习008-Keras解决多分类问题

    [火炉炼AI]深度学习008-Keras解决多分类问题 参考文章: (1)[火炉炼AI]深度学习008-Keras解决多分类问题 (2)https://www.cnblogs.com/RayDean/ ...

最新文章

  1. NYOJ 453 小珂的烦恼 模拟
  2. idea中package和directory的区别
  3. python安装os模块_python的os模块(ipython,文件,目录,权限,管理)
  4. 正则表达式。部分实例及说明(摘)
  5. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体
  6. Hibernate逍遥游记-第2章-使用hibernate.properties
  7. 前端开发有哪些技术栈要掌握_为什么要掌握前端开发的这四个主要概念
  8. zookeeper 分布式锁_详细讲解!从秒杀聊到ZooKeeper分布式锁
  9. 门户通专访草根站长九天狼:做站贵在坚持
  10. websockets 断开问题解决方案
  11. 阿里云CentOS环境之docker安装,启动,加速器,docker-compose(十四)
  12. redis获取哈希类型的值,hget、hmget、hgetall
  13. SpringBoot 使用freemarker 处理文档,找不到文件位置(报错:basePackagePath=““ /* relatively to resourceLoaderClass pkg)
  14. gan处理自己的数据集_数据集难找?GAN生成你想要的数据!!!
  15. java detach_jQuery中detach()方法用法实例
  16. 百度的搜索引擎相关技术的分析
  17. 黑客黑手伸向微博微信手机成网络钓鱼主要渠道
  18. 深入浅出RPC---4、服务注册发现和健康监测
  19. 新技能get,支付宝赚钱红包一天收入过百
  20. 超过3万Mac已感染 “银麻雀”病毒 最新m1芯片也中招

热门文章

  1. 安迪种树 前缀和 差分
  2. svg基础+微信公众号交互(二)
  3. app内录屏开发 ios_iOS 一行代码实现手机录屏功能
  4. 计算思维(美国CMU周以真教授)
  5. python pandas的read_html方法爬取网页表格
  6. Wampserver 80端口被占用
  7. 愿为你倾尽一世,守侯一生
  8. 学习了pr后的收获_Pr实训报告心得体会
  9. linux下看pcie的设备id,linux lspci查看pci总线设备信息
  10. ios 关于开源框架GPUImage的简单说明