1、一元一次函数感知器

·预测函数模型——使用一个一元一次线性函数去模拟神经元的轴突、树突的行为
·前向传播——把统计观测而来的数据送入预测函数得到进行预测的过程

罗森布拉特感知器


调整w
人类提供w的初值,机器做w的修正
alpha 防止大幅度震荡的学习率

2、方差代价函数

·选择平方/均方误差作为误差的评估手段

误差e与w形成的代价函数是标准的一元二次函数,成为代价函数。

3、梯度下降和反向传播

根据斜率是否大于等于0来调整w的斜率。
随机梯度下降:在单个样本形成的代价函数上进行

加入b后,代价函数:

  1. 选择平方/均方误差作为误差的评估手段,而这个误差与预测函数中的参数(w、b)又会形成一种函数关系,把这个函数成为代价函数(或者方差代价函数),描述了预测函数的参数取不同值的时候,预测的不同的误差代价
  2. 反向传播——用这个代价函数去修正预测函数参数的过程 修正方法:梯度下降·前向传播——把统计观测而来的数据送入预测函数得到进行预测的过程
  3. 训练(或学习)——反复利用前向传播与反向传播,最后到达代价函数最低点的过程

    在w和b上分别求导,实现梯度下降

4、激活函数

对于两极分化的分类问题,神经元预测模型变的无效了
激活函数:

激活函数是非线性的,可以很好地用来分类,为机器学习注入灵魂

  1. 把sigmoid激活函数代入到预测模型中

  2. 代入激活函数的预测模型的代价函数是一个比较复杂的复合函数:

  3. 利用复合函数的链式求导法则,求出代价函数在w、b上的导数

  4. 然后再进行梯度下降进行参数调整

5、隐藏层

让预测函数产生山丘一样的曲线
让神经元形成一个网络

多添加了两个神经元,将数据分别送入这两个神经元进行计算,再把计算结果送入到第三个神经元进行计算,最后输出

通过增加对输入更多的抽象维度,产生更多的解读而实现更加复杂的分类效果。
隐藏层——中间这些新添加的神经元节点

正是隐藏层的存在,才让神经网络能在复杂情况下继续生效
隐藏层神经元的数量越多,皆可以产生越复杂的组合,解决越复杂的问题,计算量也随之越来越大

深度——一个神经网络中纵向的隐藏层比较多(很深)
深度神经网络——隐藏层超过三层


拉链式法则——通过反向传播把 误差 传播(或者说分配)到每个权重参数w和偏置项b上

把误差e传递到第二层的神经元两个权重参数上:

偏置项:

第一层第一个输入的权重w11_1

第一层第二个输入的权重w12_1

第一层第二个偏置项:

6、高维空间

接收两个参数的神经元(输入数据特征维度等于2)

7、初识Keras框架


发生在每一个元素上

  • 自己实现一个神经元:

  • 使用Keras框架实现一个神经元:

一层神经元都可以叫做Dense

8、深度学习

隐藏层需要多少神经元
简单的定性分析:

可以通过0.5等高线在俯视图上呈现一个闭合的圈圈,来划分所需要的隐藏层的神经元数量。

一个神经元就是一条直线,在这里如果两个神经元(两个直线)的话无法闭合,所以需要三个神经元。

二维是线,三维增加了厚度

异或:一样的1不一样的0

需要一层包含三个神经元的隐藏层

而这个网络很难训练:

当初选择sigmoid函数是因为:导数处处不为0,这样在反向传播的时候使用梯度下降算法来计算函数的导数,再用这个导数去修正参数

但是sigmoid函数有一个很严重的问题:
在函数远离中心点的位置,导数极其小,这样梯度下降就很难进行–>出现梯度消失的问题

所以现在人们普遍使用Relu函数作为激活函数

但是实际效果中发现直接使用Relu函数的效果比使用改进版Relu函数效果要好,所以还是普遍使用Relu函数(神经网络比较复杂,隐藏层神经元多)。
除Relu函数本身之外,还有更多会导致梯度消失的问题。

9、卷积神经网络

泛化能力:模型在测试集上的准确率

  1. 欠拟合:模型在训练集上准确率低,可能因为模型太过简单
  2. 过拟合(泛化能力不行):在训练集上准确率很高,在测试集上准确率出现明显下降(用过分复杂的模型去拟合一些实则比较简单的问题)
    调整方法包括:
  3. 模型通过训练,有很好的泛化能力解决问题:在训练集、测试集上的准确率都很高,并且相差不大
  4. 几乎不存在:训练集准确率很低,但测试集准确率很高

卷积神经网络:
观察到一个图像数据在空间上,有不可分割的关联性,所以想到使用卷积神经网络。


卷积核的参数不是事先设置好的,是像普通神经元的权重一样通过训练学习得来的。

……
输出的是一个概率


归一化操作:把灰度值缩放到0~1之间

因为输入数据的灰度值在0-255之间,意味着某些黑暗部分的像素值很小,明亮部分的像素值很大。这样的数据会导致代价函数(碗状)很不友好(又宽又矮),使梯度下降变得困难。
变成0-1之间的值之后,代价函数会变得比较均匀,有利于梯度下降的进行

对于图像识别,一般采用卷积神经网络。

一个卷积核的训练效果是提取图像的一种特征,而我们需要提取图像更多 的特征,可以再搞一个卷积核提取第二种特征,再搞一个卷积核提取第三种特征……

池化层
最大池化层让大的值被筛选出来,能很好地提取主要特征。
池化层并不是必须的,但是加了之后往往效果不错。
池化操作因为是固定的套路,所以在反向传播中没有任何需要学习的参数。

  • 输入是一个32*32的灰度图
  • 通过第一层卷积层之后变成28286的

    所以使用了一个55的卷积核(有公式)

    如果把mnist图片用5
    5的卷积核去卷,就得到了一个24*24的图片
  • 用了6个卷积核,所以结果通道数为6
  • 池化
  • 全连接层

10、循环神经网络

观察到一个图像数据在空间上有不可分割的关联性 --> 使用卷积神经网络。
时间上也可能是如此,如气温数据、股票数据等。最典型的是人类的语言:

  • 声波随着时间通过耳朵传入大脑,一句话完整的音波说完才知道意思是什么。
  • 字或者单词随着时间逐个通过眼睛进入大脑,读完之后才知道这句话表达什么。

神经网络该如何处理这种有关联性的数据呢?以文字举例:

  • 一般把词作为自然语言处理的基本单位
  • 英文:可通过空格进行分词。在字典中依次找出这些词出现的位置并依此标号,将句子转化为向量,送入神经网络。
  • 中文:无法通过空格进行分词。先进行分词操作。往后的处理方式与英文相似。但是会出现一些问题:

    所以需要对词汇的表示法方法做进一步处理。
    但是特征提取不当的数据会使神经网络变得难以训练和泛化。
  • 词向量

    将特征组成向量
    以包含了两个特征的二维向量为例:词义越相近的词的距离越近,反之越远。

    一个词的词向量减去另一个词的词向量,距离小。警察与小偷的关系与猫和老鼠的关系十分相似。

    NLP:词嵌入技术。 把词嵌入到一个特征向量空间
  • 提取词向量

    1、嵌入矩阵
    2、给所有的词做onehot编码,将所有词的onehot编码做成一个矩阵
    3、让嵌入矩阵点乘onehot矩阵
    4、把这个句子变成词向量矩阵,每一列都是句子中对应的词向量
    有了这个嵌入矩阵,可以把一句话中所有的词转换为词向量

    5、如果后面接的是全连接神经网络,就把这些词向量铺开作为输入
    经过前向传播,得到预测输出

    在反向传播时,由于词向量矩阵的运算方法与一个普通全连接层的线性运算部分一样,所以把它称为嵌入层

    误差通过反向传播可以继续传递到词嵌入层,并更新(词嵌入矩阵)

嵌入矩阵:词汇表的词向量集合
所以词向量就可以像卷积神经网络中的卷积核那样,在训练中不断学习,最后自己学习到合适的词向量表示

每个特征的含义到了训练最后都会变得很抽象了,但肯定是捕捉到了一定的特征

一般是去使用别人在海量数据上训练好的词向量数据,应用到我们自己的工程中

替换自己的词向量矩阵,并且叫它(自己的)不再更新

11、LSTM网络(长短时记忆网络)

适合序列处理 处理关联的能力
自然语言处理实践

循环神经网络:RNN:

此处的激活函数多采用双曲正切函数tanh,而不是relu(用relu也行)。
像Keras这种编程框架中循环神经网络,默认用tanh

循环神经网络中的第一步不像其他步那样有来自上一步输出的结果一起输入,为了保证每一步操作的统一性,一般会手动添加一个共同输入x0(比如一个为全0的向量) x0,x1 -> a1


经过多次重复,就有机会把这个“好看”的正面意思消解掉,让最后的预测值做出改变,从而产生负向的分类结果。

再加一层RNN

一般2~3层

LSTM:长短时记忆网络:应对更长的序列依赖
除了输入输出以外,还添加了细胞状态的概念(遗忘门、记忆门……)

GRU结构:简化LSTM的结构,很多时候结果相近,目前大家乐于使用GRU

12、继续学习

人工智能学习02--入门相关推荐

  1. python人工智能pdf_800G人工智能学习资料:AI电子书+Python语言入门+教程+机器学习等限时免费领取!...

    人工智能的热潮在今年再创高峰.无论是政策上还是资本市场上,抑或是我们日常生活中,关于人工智能的消息从未间断,逐渐占据我们每个人的视线.可以看出,人工智能得到了由上至下,国内国外的一致支持. 基于这股热 ...

  2. 人工智能、机器学习、深度学习从入门到进阶学习资料整理

    最近整理了下在这里分享给大家,欢迎大家点赞收藏. 学习社区 神力AI(MANA):国内最大的AI代码平台. Learn AI:一个AI学习交流中心. AI研习社:一个专注于AI开发者和学术青年求知求职 ...

  3. 大数据人工智能学习路线(小白都可以看懂-从入门到精通)

    大数据&人工智能学习路线 先来看一个大数据网站所需用到的技术图 学习技术 Linux:大数据基础,hadoop.hive.hbase.spark等大数据软件的运行环境和网络环境配置,通常都是搭 ...

  4. 收藏!人工智能学习路径总结

    大家都在学Python的时候,怎么才能让自己更有竞争力? Python 的应用方向有很多,基本每个方向都是大热门,但至今为止,人工智能行业仍处于人才稀缺的情况.正因这样,近几年来,AI 成为了广大 P ...

  5. 适合人工智能的编程语言有哪些 人工智能学习路线(2022.10.16)

    人工智能ai用什么编程语言_用于AI开发的6种最佳编程语言 人工智能ai用什么编程语言_用于AI开发的6种最佳编程语言_cxq8989的博客-CSDN博客 最适合人工智能开发的六种编程语言 最适合人工 ...

  6. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

  7. 2018年终总结之人工智能学习

    2018年终总结之人工智能学习 2018年是我向人工智能转型准备的第一年! 经过这一年的努力与坚持,笔者从如下几方面来着手学习人工智能方面的专业知识. 1.观看了部分人工智能的培训视频,主要是机器学习 ...

  8. 速领:「人工智能算法从入门到精通教程」

    小伙伴从去年年底开始,一直叨叨要跳槽,大大小小的公司面试了很多,但总没有拿到一个满意的offer,要么package太低,要么就是面试被虐. 经过前几次的面试失利,终于明白了什么叫基础不牢,地动山摇. ...

  9. python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  10. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

最新文章

  1. 互联网协议 — MQTT 消息队列遥测传输协议
  2. mybatisgenerator使用_如何优雅地使用MyBatisplus
  3. c++ vector 赋值_Vector 源码剖析
  4. boost::iostreams模块实现具有64位大文件偏移量的测试程序
  5. 显示unc路径服务器根目录,错误:“您必须输入带有盘符的完整路径,例如:C:\ APPor形式的UNC路径:\\服务器\共享”...
  6. 如何在Ubuntu系统的顶部标题栏中增加CPU/内存/网速实时监控的小控件
  7. linux java mysql 备份 runtime_Mysql如何在linux中实现定时备份
  8. android 游戏摇杆ui,LayaBox实现2D游戏八方向虚拟摇杆
  9. Unity桌面程序读取Excel表格
  10. 制作颜色选择器(全)
  11. 整理备忘:【已解决】VMware虚拟机提示“锁定文件失败 打不开磁盘”
  12. 支付宝扫码支付php demo
  13. css中cale()函数的使用
  14. 2020暑期牛客多校训练营第九场(A)Groundhog and 2-Power Representation(高精度)
  15. 计网——17差错检测和纠正技术
  16. xilinx用户手册
  17. 弹指间计算机协会 2021“千里码”程序设计竞赛 题面
  18. java JSONObject 解析数组集合
  19. flash文本竖排效果实现(AS3)
  20. vivado 亚稳态_【DNN Weaver FPGA实现】Vivado BRAM资源使用

热门文章

  1. CUDA在VS中的环境搭建
  2. jquery 常用选择器和方法以及遍历(超详细)
  3. 同花顺编程语言是基于c,同花顺编程语言
  4. Android Status Bar
  5. GDB调试命令以及GDB调试段错误
  6. Python直方图美化:多颜色二维直方图(内附色卡)
  7. Java Long类型对比
  8. OGRE+CG学习日记[1]-简单的3D程序
  9. 顺序栈(含有栈顶指针,栈底指针)的实现以及编写过程中的一些疑惑的解决
  10. js 格式化当前时间 日期推算