《Andrew Ng深度学习》笔记1
深度学习概论
- 1.什么是神经网络?
- 2.用神经网络来监督学习
- 3.为什么神经网络会火起来?
1.什么是神经网络?
深度学习指的是训练神经网络。通俗的话,就是通过对数据的分析与计算发现自变量与因变量的映射关系(神经网络模型),这个映射关系可以是单层(一个神经元),也可以是网络(多个神经元),此过程可称为训练过程;其后根据此神经网络模型来对事物进行预测或分类。
通过一个例子来说明何为神经网络。房价的预测,影响房价的因素有很多,现在仅考虑房间大小,即只有一维特征。下图的红叉代表已知价格的房子大小,通过红叉,我们可以拟合出一条直线来“代表”房子大小与房价的关系。其实这也就是线性回归算法了,这里先不细说。而且由于房价没有负的,因此,直线与x轴交叉处到原点恒为0。此关系可称为ReLu函数(修正单元函数)。
绿色是新的房子大小,通过上面训练出来的模型,就可以预测出此房子大小对应的房价。这也就是神经网络在实际中的应用。

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

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

2.用神经网络来监督学习
现在的神经网络都基于其中一种机器学习,也可以成为“监督学习”。
- 监督学习就是用已知的数据来训练神经网络得出映射关系,然后使用这个映射关系来解决问题。
- 无监督学习中使用的数据是没有标记过的,即不知道输入数据对应的输出结果是什么,自己寻找数据的模型和规律。
监督学习(现实中创造价值),就是输入特征经过训练后的神经网络模型得出输出。下图很好的说明这点,输入x,经过神经网络,输出y。(在我看来也是信息转换的过程)

在实际中,有结构化数据和非结构化数据(注意,这个非是指不是完全只是结构体,就是说包括结构化和半结构化和非结构化)。结构化数据是行存储的,在数据库中一行数据是一个记录;但在非结构化数据中,是列存储的,而且在大数据时代,非结构化数据实质是稀疏的。所以结构化数据转换为矩阵计算时可以直接转换或者压缩维度。但是非结构化数据是稀疏矩阵,所以要做特殊处理,比如预测填补等。通过下图,可以清晰的看到一般情况下电商数据、广告数据等(很多的商业数据)是结构化的,但是对于图像,语音,文本等是非结构化的。因此,在实际应用神经网络时要做特殊处理。
神经网络可分为标准神经网络、卷积神经网络、循环神经网络。(此知识点等到后面学完再补充)如下图: 
3.为什么神经网络会火起来?
神经网络的概念很早就开始有了,记得上本科的时候,上自动控制原理课程时,老师就提起过神经网络,只是当时对这方面的知识没什么关注。为什么现在突然火起来?在这里,先引出吴恩达老师“最喜欢”的图来解释。

横坐标是数据规模,纵坐标是算法性能。红线是一般传统的算法在数据规模逐渐增大的时候,性能的变化趋势,很明显可以看出来,传统算法在面对数据规模较大时表现为性能达到瓶颈。然而神经网络却不受数据规模的影响,神经网络的规模越大,在数据规模越大时效果越好。
以前为什么不流行?因为现在制造的数据是过去的n多倍,有句话说现在一个n产生的数据是19世纪一个人一年产生的数据规模。就单说现在的电商数据,其规模就远超以前。因此,以前传统的算法,在面对大数据表现为瓶颈,所以神经网络NN算法才会兴起。
4.小结
神经网络是由神经元组成的,单个神经元就是一个算法模型,由多个神经元组成的神经网络能够解决更复杂的问题。最后,说一句不是废话的废话:神经网络是很有用的。在面对大数据规模的情况下,可以利用它来达到业务应用的创新或优化。
未完,待续...
《Andrew Ng深度学习》笔记1的更多相关文章
- Java内存区域与内存溢出异常——深入理解Java虚拟机 笔记一
Java内存区域 对比与C和C++,Java程序员不需要时时刻刻在意对象的创建和删除过程造成的内存溢出.内存泄露等问题,Java虚拟机很好地帮助我们解决了内存管理的问题,但深入理解Java内存区域,有 ...
- 深入理解java虚拟机笔记Chapter12
(本节笔记的线程收录在线程/并发相关的笔记中,未在此处提及) Java内存模型 Java 内存模型主要由以下三部分构成:1 个主内存.n 个线程.n 个工作内存(与线程一一对应) 主内存与工作内存 J ...
- 深入理解Java虚拟机笔记
1. Java虚拟机所管理的内存 2. 对象创建过程 3. GC收集 4. HotSpot算法的实现 5. 垃圾收集器 6. 对象分配内存与回收细节 7. 类文件结构 8. 虚拟机类加载机制 9.类加 ...
- 深入理解java虚拟机笔记Chapter7
虚拟机类的加载机制 概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类的加载机制. 类加载的时机 J ...
- 深入理解java虚拟机笔记之一
Java的技术体系主要有支撑java程序运行的虚拟机,提供各开发领域接口支持Java API,java编程语言及许多第三方java框架( 如Spring,Structs等)构成. 可以把Java程序设 ...
- 深入理解Java虚拟机笔记——虚拟机类加载机制
目录 概述 动态加载和动态连接 类加载的时机 类的生命周期 被动引用 例子一(调用子类继承父类的字段) 例子二(数组) 例子三(静态常量) 类加载的过程 加载 验证 准备 解析 符号引用 直接引用 初 ...
- 【转载】深入理解Java虚拟机笔记---运行时栈帧结构
栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素.栈帧存储了方法的局部变量表,操作 ...
- 深入理解java虚拟机笔记Chapter8
运行时栈帧结构 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素.栈帧存储了方法 ...
- 深入理解java虚拟机笔记Chapter2
java虚拟机运行时数据区 首先获取一个直观的认识: 程序计数器 线程私有.各条线程之间计数器互不影响,独立存储. 当前线程所执行的字节码行号指示器.字节码解释器工作时通过改变这个计数器值选取下一条需 ...
- 类文件结构——深入理解Java虚拟机 笔记三
在之前的笔记中记录过,Java程序变成可执行文件的步骤是:源代码-->经过编译变成class文件-->经过JVM虚拟机变成可执行的二进制文件.因此,为了对JVM执行程序的过程有一个好的了解 ...
随机推荐
- MySQL: [Err] 1093 - You can't specify target table 'bk' for update in FROM clause
错误的意思说,不能先select出同一表中的某些值,再update这个表(在同一语句中). 例如下面这个sql: delete from tbl where id in ( select ...
- 解决"Windows 安装程序不允许从远程桌面连接安装"
msiexec /i c:\路径\安装程序 例如 msiexec /i c:\TortoiseSVN-1.7.2.22327-x64-svn-1.7.2.msi
- SpringMVC+springSecurity+flexPaper 配置--类似百度文库在线预览
背景:现在项目需要做一个类似百度文库的在线预览功能,在网上找了下很多人推荐使用FlexPaper,所以今天尝试学习了FlexPaper顺便集成到现有的框架中 由于网上目前的说的都不是很详细,所以现在记 ...
- Linux vi的基本操作
进入命令 vi <文件名> 如 vi test 如果test文件存在,则直接打开编辑.如果不存在,则新建一个test的文件,这个新建的文件如果不保存的话,退出编辑器后也不会保存到硬盘中. ...
- fail-fast 与 fail-save 机制的区别
link:https://blog.csdn.net/bigtree_3721/article/details/67095084
- SpringBoot26 利用 Ribbon + RestTemplate 调用远程服务资源
1 RestTemplate扫盲 借助 RestTemplate,Spring应用能够方便地使用REST资源 2 准备 创建三个springCloud项目 >Eureaka : 服务注册中心 ...
- Apache apxs命令
一.简介 apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载 ...
- Django框架 之 中间件
Django框架 之 中间件 浏览目录 中间件介绍 自定义中间件 中间件的执行流程 中间件版登录验证 一.中间件介绍 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个 ...
- 关于instanceof测试遇到的问题
今天上上课 用 instanceof关键字来判断某个对象是否属于某种数据类型.报错 代码如下 package cn.lijun.demo3; import cn.lijun.demo.Person; ...
- Aircrack使用
Aircrack Aircrack-ng 组件功能之一就是采集WEP及WPA-PSK字典并应用无线端口扫描进行破解,具体组件说明如下: aircrack-ng 功能主要是WEP及WPA-PSK密码的恢 ...