zoukankan      html  css  js  c++  java
  • 【神经网络和深度学习-吴恩达】01-深度学习概论

    一、什么是神经网络  

      深度学习(Deep Learning)就是训练神经网络(Neural Network)。有时候,这个神经网络的复杂度会非常高。神经网络又是什么呢?我们用一个示例来阐述神经网络模型的概念。

    1. 通过房价预测模型认识神经网络

    已知条件

    • 一共六套房。
    • 已知每套房的面积(即输入 x)。
    • 已知每套房的价格(即输出 y)。

    目标

      根据已知输入输出数据,建立函数模型 y=f(x),来预测房价。

    操作步骤

      1. 将已知的六套房的价格和面积关系绘制在平面坐标系上:

      2. 用一条直线拟合图中的离散点,建立房价与面积的线性模型。但结合实际情况,房价不可能为负数,所以修改为折线:

    神经网络引入

      我们拟合得到的这条折线,就可以看作一个神经网络(尽管它很简陋,几乎是最简单的神经网络)。既然看作是神经网络,当然要用神经网络模型来表示啦:

      对于这个神经网络而言,输入 x 是房屋面积,输出 y 是房屋价格,中间包含一个神经元(neuron),这个神经元的功能就是实现函数 f(x) 的功能。

    ReLU 函数

      上述预测函数 f(x),即蓝色折线,实际上广泛应用在神经网络中。我们称之为 ReLU 函数(Rectified Linear Unit,线性整流函数)。其标准图像如下:

     

    2. 房价预测模型 2.0——构建更复杂的神经网络

      在上面的示例中,我们展示了单神经元组成的神经网络。但在实际应用中,正如房价不仅受面积这一个因素的影响,神经网络也往往由大量神经元组成。

      现在我们在上一节的房价预测模型上进行拓展。除了面积之外,卧室数量、邮编(表示交通便利性)、地区财富水平(影响教育水平)等因素也会影响房价。想得到更理想的预测结果,就要考虑这些因素的影响:

      上图是经过拓展的神经网络,其中有四个输入。但它还不是这个示例真正的神经网络模型。在真正的神经网络模型中,每个神经元都和所有的输入 x 有关联:

    输入层

      输入 x 所在的层。

    中间层(隐藏层)

      上图中三个神经元所在的层。

    输出层

      输出 y 所在的层。

      以上就是基本的神经网络模型。只要使用足够多的输入 x 和输入 y 进行训练,就能训练出较好的神经网络模型,从而得到相对准确的结果。

    二、用神经网络进行监督学习

    什么是监督学习

      实际应用中,机器学习解决的大部分问题都属于监督式学习(Supervised Learning),神经网络模型也大都属于监督式学习。

    • 监督式学习:知道输入 x 和输出 y 之间的对应关系。
    • 非监督式学习:不知道输入 x 和输出 y 之间的对应关系。

    监督式学习应用示例

    • 房屋价格预测。根据训练样本的输入x和输出y,训练神经网络模型,预测房价。
    • 线上广告。输入 x 是广告类型和用户信息,输出 y 是用户是否会点击广告。训练后的神经网络模型,能够根据广告类型和用户信息对用户的点击行为进行预测,从而向用户提供可能感兴趣的广告。
    • 电脑视觉(computer vision)。输入x是图片像素值,输出是图片所属的不同类别。
    • 语音识别(speech recognition)。深度学习可以将一段语音信号辨识为相应的文字信息。
    • 智能翻译,譬如输入 x 为英文,输出 y 为中文。
    • 自动驾驶。输入 x 是路况图片或汽车雷达信息,训练后的神经网络会提示相应的路况信息,并作出决策。

    神经网络的适用范围

      针对不同的问题和应用场合,应该选用不同类型的神经网络模型:

    • 一般的监督式学习(房价预测和线上广告问题),使用标准神经网络模型即可。
    • 图像识别处理问题,使用卷积神经网络(CNN,Convolution Neural Network)。
    • 处理类似语音的序列信号,使用循环神经网络(RNN,Recurrent Neural Network)。
    • 类似自动驾驶这样的复杂问题,使用更复杂的混合神经网络模型。

      CNN 和 RNN 都是比较常用的神经网络模型。CNN 一般处理图像问题,RNN 一般处理语音信号。

      下图为 Standard NN,CNN 和 RNN 的神经网络结构图:

    结构化数据(Structed Data)和非结构化数据(Unstructed Data)

      结构化数据通常指的是有实际意义的数据。例如房价预测中的面积、卧室数、价格等,以及在线广告中的用户年龄、广告类别等。这些数据都具有实际的物理意义,比较容易理解。

      非结构化数据通常指的是比较抽象的数据,例如音频、图像和文字。

      以前计算机对非结构化数据处理能力较差。但得益于深度学习和神经网络的发展,计算机处理非结构化数据的效果越来越好,在某些方面甚至已经优于人类。总而言之,神经网络与深度学习的发展,使得计算机对结构化数据和非结构化数据的处理能力越来越好,并逐渐创造出巨大的实用价值。

      在后续的学习和实际应用中,我们也会遇到大量结构化数据和非结构化数据。

    三、深度学习为何兴起

    数据规模扩大

      深度学习和神经网络背后的技术思想已经出现数十年了,为什么直到现在才真正兴起呢?我们以下图进行说明。其中横坐标 x 表示数据量(Amount of data),纵坐标 y 表示机器学习模型的性能表现(Performance)。

      红色曲线表示传统机器学习算法的表现,譬如 SVM、logistic regression、decision tree 等。当数据量比较小的时候,传统学习模型的表现是比较好的。但是当数据量很大的时候,其表现很一般,性能基本趋于水平。

      黄色曲线表示规模较小的神经网络模型(Small NN)。它在数据量较大时性能优于传统的机器学习算法。

      蓝色曲线表示规模中等的神经网络模型(Medium NN),它在数据量更大的时候的表现比 Small NN 更好。

      绿色曲线代表更大规模的神经网络(Large NN),即深度学习模型。在数据量很大的时候,它的表现仍然是最好的,而且基本上保持了较快上升的趋势。

      近年来,由于数字计算机的普及,人类进入了大数据时代。如何对大数据建立稳健准确的学习模型变得尤为重要。传统机器学习算法在数据量较大的时性能一般,且很难再有提升。深度学习模型对大数据的处理和分析优势明显。所以,近年来在处理海量数据和建立复杂准确的学习模型方面,深度学习有着非常不错的表现。但同时也应看到,在数据量不大的时候,例如上图中的左侧区域,深度学习模型不一定优于传统机器学习算法,性能差异可能并不大。

    算力增长

      计算机的发展,使得运算能力大幅提升。

    算法创新

      算法的创新和改进也大大提升了深度学习的性能和速度。还是通过示例来说明:

      早期神经网络神经元的激活函数是 Sigmoid 函数,后来改为 ReLU 函数。原因是 Sigmoid 函数在远离零点的位置,函数曲线非常平缓,其梯度趋于0,从而导致神经网络模型学习速度变得很慢。而 ReLU 函数在 x 大于零的区域,梯度始终为 1。尽管在 x 小于零的区域梯度为 0,但是在实际应用中采用 ReLU 函数确实要比 Sigmoid 函数快很多。

      综上所述,深度学习的兴起,依赖于以下三个条件:

    • 数据规模增大
    • 算力提高
    • 算法创新

    四、深度学习的应用流程

      构建一个深度学习时,首先要有想法,然后将其转化为代码,最后进行训练。根据训练结果,调整想法,继续进行这种循环,直到最终训练得到相对满意深度学习网络模型。计算速度越快,每一步骤耗时越少,上述循环越能高效进行。

  • 相关阅读:
    关于Monitor和lock的锁操作 笔记
    模型/数据验证(System.ComponentModel.DataAnnotations)笔记
    NSIS 打包操作
    关于IE和非IE浏览器的一些差异笔记
    Wpf 字典触发器
    关于MongoDB在C#的使用
    Apache JMeter
    关于在移动端方面的css应用
    关于csc.exe
    增量运算符+=和*=的原理与不可变序列增量运算效率低的原因
  • 原文地址:https://www.cnblogs.com/murongmochen/p/12702864.html
Copyright © 2011-2022 走看看