深度学习概论

  • 1.什么是神经网络?
  • 2.用神经网络来监督学习
  • 3.为什么神经网络会火起来?

1.什么是神经网络?

深度学习指的是训练神经网络。通俗的话,就是通过对数据的分析与计算发现自变量与因变量的映射关系(神经网络模型),这个映射关系可以是单层(一个神经元),也可以是网络(多个神经元),此过程可称为训练过程;其后根据此神经网络模型来对事物进行预测或分类。

通过一个例子来说明何为神经网络。房价的预测,影响房价的因素有很多,现在仅考虑房间大小,即只有一维特征。下图的红叉代表已知价格的房子大小,通过红叉,我们可以拟合出一条直线来“代表”房子大小与房价的关系。其实这也就是线性回归算法了,这里先不细说。而且由于房价没有负的,因此,直线与x轴交叉处到原点恒为0。此关系可称为ReLu函数(修正单元函数)。

绿色是新的房子大小,通过上面训练出来的模型,就可以预测出此房子大小对应的房价。这也就是神经网络在实际中的应用。

基于上面的讨论,其实是一个最简单的神经网络,因为一个输入x,经过模型,输出y。其模型可用下图表示:

圈圈就是一个神经元,它接受输入,经过自身内部的算法计算,得出输出y。每个神经元就是一个算法模型,此模型虽简单但也通过一个简单的算法模型来解决实际问题。

但是这是一个特征输入的,如果有n多维特征,模型是如何的呢?比如上面预测房价例子,影响房价的因素不仅只是房子大小,还有房子地段、基础设施、家庭人口等。在这里就引出了神经网络。神经网络是由n多个神经元堆叠而成的,接受的参数多了,输入经过神经网络得出的输出就更接近真实。房价预测的神经网络模型增加输入特征后可优化为下图,其实就是把多个神经元组成一个网络,模拟“人”的神经解决问题。

2.用神经网络来监督学习

现在的神经网络都基于其中一种机器学习,也可以成为“监督学习”。

  • 监督学习就是用已知的数据来训练神经网络得出映射关系,然后使用这个映射关系来解决问题。
  • 无监督学习中使用的数据是没有标记过的,即不知道输入数据对应的输出结果是什么,自己寻找数据的模型和规律。

监督学习(现实中创造价值),就是输入特征经过训练后的神经网络模型得出输出。下图很好的说明这点,输入x,经过神经网络,输出y。(在我看来也是信息转换的过程)

在实际中,有结构化数据和非结构化数据(注意,这个非是指不是完全只是结构体,就是说包括结构化和半结构化和非结构化)。结构化数据是行存储的,在数据库中一行数据是一个记录;但在非结构化数据中,是列存储的,而且在大数据时代,非结构化数据实质是稀疏的。所以结构化数据转换为矩阵计算时可以直接转换或者压缩维度。但是非结构化数据是稀疏矩阵,所以要做特殊处理,比如预测填补等。通过下图,可以清晰的看到一般情况下电商数据、广告数据等(很多的商业数据)是结构化的,但是对于图像,语音,文本等是非结构化的。因此,在实际应用神经网络时要做特殊处理。

神经网络可分为标准神经网络、卷积神经网络、循环神经网络。(此知识点等到后面学完再补充)如下图: 

3.为什么神经网络会火起来?

神经网络的概念很早就开始有了,记得上本科的时候,上自动控制原理课程时,老师就提起过神经网络,只是当时对这方面的知识没什么关注。为什么现在突然火起来?在这里,先引出吴恩达老师“最喜欢”的图来解释。

横坐标是数据规模,纵坐标是算法性能。红线是一般传统的算法在数据规模逐渐增大的时候,性能的变化趋势,很明显可以看出来,传统算法在面对数据规模较大时表现为性能达到瓶颈。然而神经网络却不受数据规模的影响,神经网络的规模越大,在数据规模越大时效果越好。

以前为什么不流行?因为现在制造的数据是过去的n多倍,有句话说现在一个n产生的数据是19世纪一个人一年产生的数据规模。就单说现在的电商数据,其规模就远超以前。因此,以前传统的算法,在面对大数据表现为瓶颈,所以神经网络NN算法才会兴起。

4.小结

神经网络是由神经元组成的,单个神经元就是一个算法模型,由多个神经元组成的神经网络能够解决更复杂的问题。最后,说一句不是废话的废话:神经网络是很有用的。在面对大数据规模的情况下,可以利用它来达到业务应用的创新或优化。

未完,待续...

《Andrew Ng深度学习》笔记1的更多相关文章

  1. Java内存区域与内存溢出异常——深入理解Java虚拟机 笔记一

    Java内存区域 对比与C和C++,Java程序员不需要时时刻刻在意对象的创建和删除过程造成的内存溢出.内存泄露等问题,Java虚拟机很好地帮助我们解决了内存管理的问题,但深入理解Java内存区域,有 ...

  2. 深入理解java虚拟机笔记Chapter12

    (本节笔记的线程收录在线程/并发相关的笔记中,未在此处提及) Java内存模型 Java 内存模型主要由以下三部分构成:1 个主内存.n 个线程.n 个工作内存(与线程一一对应) 主内存与工作内存 J ...

  3. 深入理解Java虚拟机笔记

    1. Java虚拟机所管理的内存 2. 对象创建过程 3. GC收集 4. HotSpot算法的实现 5. 垃圾收集器 6. 对象分配内存与回收细节 7. 类文件结构 8. 虚拟机类加载机制 9.类加 ...

  4. 深入理解java虚拟机笔记Chapter7

    虚拟机类的加载机制 概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类的加载机制. 类加载的时机 J ...

  5. 深入理解java虚拟机笔记之一

    Java的技术体系主要有支撑java程序运行的虚拟机,提供各开发领域接口支持Java API,java编程语言及许多第三方java框架( 如Spring,Structs等)构成. 可以把Java程序设 ...

  6. 深入理解Java虚拟机笔记——虚拟机类加载机制

    目录 概述 动态加载和动态连接 类加载的时机 类的生命周期 被动引用 例子一(调用子类继承父类的字段) 例子二(数组) 例子三(静态常量) 类加载的过程 加载 验证 准备 解析 符号引用 直接引用 初 ...

  7. 【转载】深入理解Java虚拟机笔记---运行时栈帧结构

    栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素.栈帧存储了方法的局部变量表,操作 ...

  8. 深入理解java虚拟机笔记Chapter8

    运行时栈帧结构 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素.栈帧存储了方法 ...

  9. 深入理解java虚拟机笔记Chapter2

    java虚拟机运行时数据区 首先获取一个直观的认识: 程序计数器 线程私有.各条线程之间计数器互不影响,独立存储. 当前线程所执行的字节码行号指示器.字节码解释器工作时通过改变这个计数器值选取下一条需 ...

  10. 类文件结构——深入理解Java虚拟机 笔记三

    在之前的笔记中记录过,Java程序变成可执行文件的步骤是:源代码-->经过编译变成class文件-->经过JVM虚拟机变成可执行的二进制文件.因此,为了对JVM执行程序的过程有一个好的了解 ...

随机推荐

  1. Spring Cloud Zuul 1(API 网关服务)

    API网关是一个更为智能的应用服务器,它的存在就像是整个微服架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤. 它实现的功能包括:请求路由.负载均衡.校验过滤等功能. Spring ...

  2. 将.sql文件导入powerdesigner的实现方法详解

    将.sql文件导入powerdesigner的步骤是本文我们主要要介绍的内容,步骤如下: 第一步:将要导入的库的所有表的表结构(不要表数据,只要表结构)导出成一个.sql文件. 第二步:在powerd ...

  3. apk安装包信息

    String archiveFilePath="sdcard/DangDang.apk";//安装包路径          PackageManager pm = getPacka ...

  4. C#使用windows服务定时调用api接口

    使用VS创建windows服务项目: 创建好项目  会出现一个设计界面 右键弹出对话框 选择添加安装程序 名字什么的自己可以改: 项目目录: 打开项目中的ProjectInstaller.Design ...

  5. solrcloud上传collection配置

    建议:上传多个collection的配置文件,建议修改配置文件名字,在solr.xml中按照文件名来引用collection对应的schema和solrconfig.xml文件,这样无论你多个coll ...

  6. 使用laravel实现用户的登陆

    首先在 php artisan 里面 make:auth 生产一个门脸类 修改配置文件里面要哪个模型登陆 模型得继承一下才能 先写一下注册 密码必须要使用laravel的加密方法,使用MD5都没用 l ...

  7. Arcgis engine编程报错查询(转)

    Arcgis engine编程报错查询 标签: arcgis arcengine arcgisengine 2016年04月10日 17:29:35429人阅读 评论(0) 收藏 举报  分类: Ar ...

  8. 501. Find Mode in Binary Search Tree查找BST中的众数

    [抄题]: Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently oc ...

  9. 字符串的查找删除---C++中string.find()函数与string::npos

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串 输入: 输入只有一组数据 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止 输出: 删除输入的短字符串 ...

  10. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(3):常用动态代理之JDK动态代理、CGLIB动态代理

    一.动态代理的理解 动态代理的意义在于生成一个占位(又称代理对象),来代理真实对象,从而控制真实对象的访问.        先来谈谈什么是代理模式.        假设这样一个场景:你的公司是一家软件 ...