机器学习笔记(二)

目录

    • 十一、神经网络。
      • 11.1 需求预测(神经网络流程)
      • 11.2 举例-图像感知
    • 十二、网络层
      • 12.1 更复杂的神经网络
      • 12.2 神经网络向前传播
    • 十三、用代码实现推理
      • 13.1 Tensorflow中的数据形式
      • 13.2 搭建神经网络
    • 十四、单个网络层上的向前传播
      • 14.1 向前传播的一般实现
    • 十五、强人工智能-AGI
    • 十六、神经网络为何如此高效
      • 16.1 矩阵乘法
      • 16.2 矩阵乘法规则
      • 16.3 矩阵乘法代码
    • 十七、Tensorflow实现
      • 17.2 模型训练细节
    • 十八、Sigmoid激活函数的替代方案
      • 18.1 如何选择激活函数
      • 18.2 为什么模型需要激活函数
    • 十九、多分类问题
      • 19.1 神经网络Softmax输出
      • 19.2 softmax的改进实现
      • 19.3 多个输出的分类
    • 二十、高级优化方法
      • 20.1 其他网络层类型
    • 二十一、下一步做什么
      • 21.1 模型评估
      • 21.2 模型选择&交叉验证测试集的训练方法

十一、神经网络。

神经网络是一种人工智能方法,用于教计算机以受人脑启发的方式处理数据。这是一种机器学习过程,称为深度学习,它使用类似于人脑的分层结构中的互连节点或神经元。它可以创建自适应系统,计算机使用该系统来从错误中进行学习并不断改进。因此,人工神经网络可以尝试解决复杂的问题,例如更准确地总结文档或人脸识别。

神经网络具有很多使用案例,涵盖很多行业,如下所示:

  • 通过医疗影像分类进行医疗诊断
  • 通过社交网络筛选和行为数据分析进行有针对性的营销
  • 通过处理金融工具的历史数据进行金融预测
  • 电力负载和能源需求预测
  • 流程和质量控制
  • 化合物鉴定

    更多相关介绍

11.1 需求预测(神经网络流程)

举例:用四个特征值预测一件T恤是否畅销。
将一组神经元表示为一层,从而进行分层,一层的神经元输入相同或相似的特征,并反过来输出几个数字,作为下一层的输入。

  1. (输入层)左侧是四个特征值:价格、运费、市场、材料质量
    • 可以将这层的四个特征值组成特征向量 x
  2. (隐藏层)中间三个神经元分别表示:
    • 负担能力(是否支付得起):由价格与运费进行判断
    • 认知度(知名度)多少:由市场构成
    • 潜在偏见的感知质量:由价格与材料质量构成
  3. 调用负担能力与感知质量作为激活
    • 激活指的是生物神经元正在发送高输出值或发送向下游的其他神经元发出的电脉冲
  4. (输出层)中间右侧的一个神经元由左侧三个神经元链接
    • 该层输出层,因为是最终神经元输出的概率就是神经网络预测的输出概率
  5. 最终输出概率
  6. 主要流程就是
    • 输入层输入四个数字 组成特征向量 x
    • 经过第一层计算四个数字,然后计算出新的数字,亦被称为激活值,组合成为另一个向量a
    • 然后到达最后一层输出层,将三个数字计算为一个数字即为概率

隐藏层由来:
当我们使用训练集的时候,可以观察到输入和输出的数据,但是没有告诉我们经过隐藏层时产生的那几个激活值,因此称为隐藏层。



当构建自己的神经网络时,需要做出的决定之一就是想要多少隐藏层和多少神经元 。

11.2 举例-图像感知

构建一个神经网络:

  1. 一个图像可以由1000*1000的像素强度矩阵进行表示

  2. 然后将矩阵展开为向量

  3. 将百万特征向量作为输入,并输出图中人的身份

  4. 输入数据经过多个隐藏层处理最终输出结果

机器学习笔记(二)_第1张图片
第一个隐藏层的每个神经元可能在寻找的图像中线条非常短或者边缘很短

每经过一层探测的范围可能就会增大,最终选出最合适的输出。

十二、网络层

隐藏层的计算流程

  • 输入的特征向量为x
  • 使用逻辑回归函数计算激活值

    同理对传入的激活值进行计算,最终得出输出值。
    中括号上标表示的是第几层!
    最终对输出值可以设置一个阈值进行判断是否想要。

12.1 更复杂的神经网络

sigmoid是一个激活函数,激活函数就是输出这些激活值的函数

12.2 神经网络向前传播

将学到的知识整合到一个算法中,让神经网络进行推理或者预测,即称为一种向前传播的算法。
机器学习笔记(二)_第2张图片
因为计算是从左到右进行的,一层到一层,所以被称为向前传播,因为正在传播神经元的激活。与反向传播可形成对比!

十三、用代码实现推理

TensorFlow与Pytroch

煮咖啡例子

代码示例
机器学习笔记(二)_第3张图片
图像识别示例
机器学习笔记(二)_第4张图片

13.1 Tensorflow中的数据形式

np.array的矩阵表达形式,行向量与列向量的介绍。
不懂就看-> 菜鸟教程NumPy
np.array([[1,2,3],[4,5,6]])

机器学习笔记(二)_第5张图片

13.2 搭建神经网络

Sequential([])序列函数,可以按照顺序执行方法,从左传到右,向前传播!
使用模型的时候调用compile(…)
之后调用.fit拟合函数,告诉Tensorflow采用这个神经网络是通过将第一层和第二层顺序串在一起创建,并在数据x和y上对其进行训练
moedl.predict(x_new)即可进行新的数据的预测

机器学习笔记(二)_第6张图片

十四、单个网络层上的向前传播

14.1 向前传播的一般实现

代码实现

十五、强人工智能-AGI

强人工智能(Strong AI) [3] 观点认为有可能制造出真正能推理(Reasoning)和解决问题(Problem_solving)的智能机器,并且,这样的机器将被认为是有知觉的,有自我意识的。可以独立思考问题并制定解决问题的最优方案,有自己的价值观和世界观体系。有和生物一样的各种本能,比如生存和安全需求。在某种意义上可以看作一种新的文明。

人工智能可以分为
弱人工智能(Artificial Narrow Intelligence,简称ANI)、
强人工智能(Artificial General Intelligence简称AGI)、
超人工智能(Artificial Superintelligence简称ASI)三个等级。

AlphaGo就是弱人工智能的典型代表,简单地说,AlphaGo可以跟你对弈一场围棋,却不能跟你玩五子棋,因为AlphaGo的“大脑”里“学习”的都是围棋棋谱。
\

十六、神经网络为何如此高效

16.1 矩阵乘法

行*列
机器学习笔记(二)_第7张图片
机器学习笔记(二)_第8张图片

16.2 矩阵乘法规则

机器学习笔记(二)_第9张图片
相乘的规则就是第一个矩阵的列数必须等于第二个矩阵的行数

16.3 矩阵乘法代码

机器学习笔记(二)_第10张图片
举例
机器学习笔记(二)_第11张图片

十七、Tensorflow实现


epochs执行多少次来创建下降

17.2 模型训练细节

  1. 如何在给定输入特征x和参数w和b的情况下计算输出。 指定逻辑回归的输入到输出函数
  2. 指定损失函数和成本函数
  3. 使用算法,特别是梯度下降以最小化成本函数J将其最小化为参数w和b的函数,即更新参数

    第一步:

    第二步:

    第三步:
    机器学习笔记(二)_第12张图片

十八、Sigmoid激活函数的替代方案

### 18.1 RELU函数

18.1 如何选择激活函数

  • 二分类问题,使用sigmoid函数
  • 解决回归问题或预测问题使用线性激活函数
  • 如果y只能取非负值,例如预测房子的价格之类,采用RELU函数

Relu函数是最常见的函数

  • Relu函数的计算速度更快一些,因为只需要计算max(0,z),而sigmoid函数需要取幂,然后取逆,效率较低
  • Relu函数仅在图形中的一部分变平,左边几乎是完全平坦的,而sigmoid激活函数在两个地方变平,平展在左侧和右侧,如果用梯度下降来训练神经网络,那么当有一个在很多地方很胖的函数(中间的梯度图)时,梯度下降特别慢 。

    隐藏层中建议使用Relu激活函数

18.2 为什么模型需要激活函数

以线性激活函数为例:

在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

机器学习笔记(二)_第13张图片

不要在隐藏层中使用线性激活函数,建议使用Relu

十九、多分类问题

softmax回归算法
是逻辑回归的泛化

成本函数对比

19.1 神经网络Softmax输出

softmax输出层
激活值中的每一个都取决于Z的所有值

19.2 softmax的改进实现

19.3 多个输出的分类

多标签分类问题
同时检测多个目标

二十、高级优化方法

Adam算法可以自动调整学习率
代表自适应矩阵估计
不同的参数使用不同的学习率,α1-n…
机器学习笔记(二)_第14张图片
代码实现
机器学习笔记(二)_第15张图片

20.1 其他网络层类型

卷积层神经网络可以需要更少的训练数据,并且不容易过拟合 。(即卷积神经网络)

二十一、下一步做什么

模型训练预测结果出错要如何做

  • 增加训练数据
  • 尝试较小的特征
  • 添加额外的特征
  • 添加多项式特征
  • 减少λ
  • 增加λ
    机器学习笔记(二)_第16张图片

21.1 模型评估

区分训练集与测试机集,大部分进入训练集、小部分作为测试集
使用测试集评估模型的性能
机器学习笔记(二)_第17张图片
使用具有平方误差成本的线性回归

测试集J特别高的话则证明在训练集上好,但是实际效果不好,因此需要从新训练

21.2 模型选择&交叉验证测试集的训练方法

  • training set为训练集
  • CV为交叉验证集
  • test set为测试集
  • 交叉验证是指这是一个额外的数据集,用于检查或者信任检查不同模型的有效性或真实性,简称为验证集,亦称开发集

    计算出训练误差、交叉验证误差、测试误差
    然后根据误差可以选择出合适的模型
    机器学习笔记(二)_第18张图片

如用于选择神经网络架构:
机器学习笔记(二)_第19张图片

为了确定神经网络有多少层以及多少隐藏单元,然后训练上述三种模型,得到三种不同参数的模型,
之后使用Jcv评估神经网络的性能,在分类问题上使用交叉验证集,Jcv可以是示例的百分比,
最常见的方式是将其计算为交叉验证示例的分数算法错误分类,
计算完毕之后选择最低Jcv的模型,
最后使用测试集来决定到底采用什么模型。

你可能感兴趣的:(人工智能,Python,人工智能,深度学习)