NLPJob

标签热度

机器学习 coursera 斯坦福大学 公开课 斯坦福 深度学习 自然语言处理 python 数据科学 andrew ng 数学 nlp 数据分析 数据挖掘 神经网络 大数据 计算机科学 英语 deep learning 统计学 算法 课件 数据可视化 机器学习公开课 机器学习笔记 google 机器学习视频 计算机 商业 推荐系统 数据结构 r语言 java 密码学 udacity 金融 免费电子书 电子书 公开课笔记 计算机视觉 商务英语 学术英语 python数据可视化 机器学习课程 机器人 ted 文本挖掘 r 视频 领导力 java编程 回归模型 excel 深度学习课程 mysql cousera公开课 统计 大数据公开课 ted公开课 ted演讲 线性回归 mit 概率图模型 金融市场 tensorflow 学习英语 物联网 大数据专项课程 python入门 大数据课程 英语写作 英语学习 算法课程 强化学习 高级机器学习 kaggle 文本分析 机器学习资料 函数式编程 scala 游戏设计 cousera 机器学习系统 机器人公开课 开源代码 人工智能 普林斯顿大学 machine learning 线性代数 代价函数 软件工程 javascript 伯克利 管理 市场营销 财务会计 沃顿商学院 网页开发 网站开发 web开发 网络安全 python数据科学 商业分析 非对称密码学 对称密码学 应用密码学 大规模数据科学 英语听说 概率 机器学习基石 python机器学习 算法公开课 源代码 数学思维 社交网络分析 微积分公开课 杜克大学 机器学习公开课视频 公开课视频 coursera公开课视频 coursera公开课 贝叶斯 信息论 离散数学 宾夕法尼亚大学 neural networks 伯克利大学 密歇根大学 成本函数 梯度下降 云计算 编译器 自动机 cs101 daphne koller spark 软件 会计 英语交流 商业策略 风险管理 资产管理 地理信息系统 gis 卷积神经网络 面向对象编程 序列模型 移动应用开发 数据库 计算机通信 敏捷开发 高级商务分析 商务分析 商务英语课程 c语言 数据管理 投资 计算原理 计算基础 推荐系统导论 学术英语写作 android应用开发 android开发 android 机器人课程 机器人学 数据科学竞赛 yandex 深度学习公开课 深度学习书籍 数据集 机器学习资源 分布式 微积分 大规模机器学习系统 统计推断 数据科学公开课 游戏 数学思维公开课 机器学习课件 数学公开课 微积分公开课视频 微积分公开课下载 mit微积分 mit公开课 龙星计划 神经网络公开课 coursera视频 斯坦福公开课 windows ios udacity公开课 无人驾驶汽车 人机交互公开课 人机交互 正则化 过拟合 逻辑回归 模型思维 网易公开课 acl net 逻辑 cmu 情感分析 我爱公开课 引言 普林斯顿 经济 saas 52opencourse 逻辑导引 图模型 chirs manning dan jurafsky ppt 时间序列 go语言课程 go语言 工程师 语法 区块链基础 区块链 软件开发 商务基础 运营管理 商务 机器学习实战 数据系统 投资管理 swift 计算机安全与系统管理 系统管理 计算机安全 seo策略 seo工具 seo 组织领导力 css3 html5 会计基础 c sharp 英语沟通 并发 并行 全栈开发 数据仓库 商业智能 投资策略 金融基础 数据工程 python零基础 安全系统 现代密码学 硬件安全 软件安全 网络安全基础 递归神经网络 信息检索 云计算网络 云计算应用 云计算基础 云计算概念 分组交换网络 局域网 创意写作 写作 数学基础 台湾大学 基因序列 生物信息学 斯坦福算法课程 软件架构 软件设计 java程序设计 r语言基础 图论 组合数学 python数据表示 python基础 深度学习专项课程 游戏设计与开发 游戏开发 游戏设计概念 游戏设计艺术 angular 恐龙古生物学 恐龙 古生物学 推荐系统评价 jquery 英语语法 c# 高级算法 算法专项 iot python专项课程 python入门课程 商务英语交流技巧 商务英语交流 python社交网络分析 python文本挖掘 机器学习专项 金融价值 金融决策 金融公开课 数据结构与算法 大数据机器学习 大数据分析 商业与金融建模 金融建模 c++ 学术英语听说 数据分析工具 编程入门 编程 编程基础 算法思维 计算机基础 秘钥管理 hdfs 数据工程师 hive 3d交互设计 3d建模 虚拟现实 vr 洛桑联邦理工学院 函数式编程入门 数据科学课程 数据科学专项课程 学术英语课程 学术英语写作课程 斯坦福算法专项课程 斯坦福算法 python数据分析 英文简历 英文面试 英文写作 贝叶斯方法 商业分析技术 大数据建模 数据获取 数据清洗 文本挖掘课程 聚类分析 python公开课 python课程 主成分分析 深度学习资料 词意消歧 词义消歧 推荐系统入门 python书籍 机器学习算法 数据结构课程 图像处理 贝叶斯方法实战 深度学习源代码 sibyl p2p 机器学习书籍 数据结构资料 凸优化 推荐系统入门资料 数据科学导论 可视化 机器学习开源工具包 jane mcgonigal 公开课社区 挖课 courseminer 文本情感分析 多变量微积分 社会计算 数学分析公开课 概率图模型公开课 百度 吴恩达 香港科技大学 函数式语言 scala公开课 class2go coursera无法连接 coursera打不开 keith devlin 数学思维简介 社交网络 余凯 张潼 机器人视频 robert sedgewick 算法上 多伦多大学 莱斯大学 华盛顿大学 佐治亚理工学院 神经网络视频 矩阵 coursera在线视频

Text Summarization

Keyword Extraction

Text Processing

Word Similarity

Best Coursera Course

+7 投票

斯坦福大学机器学习第八课“神经网络的表示(Neural Networks: Representation)”学习笔记,本次课程主要包括7部分:

1)  Non-linear hypotheses (非线性hypotheses)

2)  Neurons and the brain (神经元和大脑)

3)  Model representation I (模型表示一)

4)  Model representation II (模型表示二)

5)  Examples and intuitions I (例子和直观解释一)

6)  Examples and intuitions II (例子和直观解释二)

7)  Multi-class classification (多类分类问题)

以下是每一部分的详细解读。

 

1)  Non-linear hypotheses (非线性hypotheses)

非线性分类器:

我们之前谈过线性回归,逻辑回归,当我们遇到一些比较复杂的分类问题时,是否还有其他选择?例如,对于多项式回归:

多项式回归-我爱公开课-52opencourse.com

可以得到如下的非线性分类器:

非线性分类-我爱公开课-52opencourse.com


假设这是一个房价预测问题,不过这一次不再是预测房价(回归问题),而是预测未来6个月是否能售出(分类问题)。如果有100个独立特征,例如:

房价问题特征-我爱公开课——52opecourse.com

那么,当我们任取两个特征作为组合特征时,大约可以得到5000个特征(\(O(n^2)\));当我们任取3个特征作为组合特征时,大约可以得到170000(\(O(n^3)\))个特征.

这样的问题还有很多,例如在计算机视觉的汽车检测问题中,对于一副汽车图片来说,你可以轻易的辨别出这是一辆汽车,但是在计算机或者相机“眼里”,这只是一堆像素的数字矩阵而已:

计算机视觉汽车检测-我爱公开课-52opencourse.com

所以,对于汽车检测问题,我们需要一堆汽车图片:

汽车图片训练集-我爱公开课——52opencourse.com

和一堆非汽车图片作为训练集:

非汽车图片训练集-我爱公开课-52opencourse.com

训练一个用于汽车检测的分类器,对于一个测试图片,判断是否是汽车:

汽车检测测试-我爱公开课-52opencourse.com

一种方法是从每辆汽车是取两个像素点作为样本的特征,然后通过学习算法来训练分类器:

训练样本-我爱公开课-52opencourse.com

那么这些正负例(汽车 or 非汽车)训练样本可以用图形表示如下:

正负例样本-我爱公开课——52opencourse.com

假设每幅图片有50 * 50 = 2500个像素,那么每个样本有2500个像素点可以选择,如果是是二次项组合特征,大约有3百万个特征组合:

正负例样本—我爱公开课-52opencourse.com

对于这样的有着大量特征的分类问题,除了逻辑回归,是否还有其他的学习算法?接下来,我们将引入神经网络(Neural Networks),一种试图模拟人类大脑的学习算法,这个算法,对于复杂的假设空间和复杂的非线性问题有很好的学习能力。

 

2)  Neurons and the brain (神经元和大脑)

神经网络:

  • 起源于尝试让机器模仿大脑的算法;
  • 在80年代和90年代早期非常流行,慢慢在90年代后期衰落;
  • 最近得益于计算机硬件能力,又开始流行起来:对于很多应用,神经网络算法是一种“时髦”的技术;

大脑很神奇,可以让我们去听,去看,去触,也可以做数学题,做微积分,做很多神奇的事情,要模仿大脑,似乎需要我们写很多程序来做不同的事情?但是恰恰与此相反,做这些事情仅仅需要一个学习算法。下面是两个例子,是神经科学家做的非常酷的两个实验,这些实验可以说明我们仅需一种学习算法就可以模拟很多事情。

听觉皮层实验:

听觉皮层实验-我爱公开课-52opencourse.com

上图是大脑的一部分,红色的部分是听觉皮层,用来处理耳朵收集的声音信号并让大脑理解。神经科学家做了一个实验,切断耳朵和听觉皮层的联系,并且连接眼睛和听觉皮层,这样从眼睛采集的信号不再传送到视神经而是听觉皮层,这样做得最终结果是听觉皮层将会学习“看"。

体感皮层实验:

体感皮层实验-我爱公开课-52opencourse.com

上图的红色区域是体感皮层,主要身体的触觉,与听觉皮层实验相似,如果我们做相似的实验,那么体感皮层也将学会”看“。

上述两个实验统称为神经重布线实验(neuro-rewiring experiments), 这些实验给我们的感觉就是同样的一块儿脑组织既可以处理视觉,也可以处理听觉,还可以处理触觉,也许就存在一种学习算法来处理视觉信号,听觉信号和触觉信号。如果我们能近似模拟或实现大脑的这种学习算法,我们就能获得绝大部分大脑可以完成的功能,因为大脑可以自己去处理不同类型的数据。以下是一些模拟大脑传感器的例子:

大脑传感器-我爱公开课—52opencourse.com

包括:用舌头去“看”;回声定位或者声纳定位;触觉皮带-方向感(向小鸟一样感知方向);给青蛙植入第三只眼。

这些都是很酷的例子,也许人类的AI之梦并不遥远了!

 

3)  Model representation I (模型表示一)

大脑中的神经元:

神经网络的目标就是模拟大脑中的神经元或网络,因此在介绍hypotheses的表示之前,先让我们来看一看大脑中神经元:

大脑中的神经元-我爱公开课-52opencourse.com

注:关于这一块儿,由于不太熟悉,即使听Andrew Ng 老师的课也有很多糊涂的地方,于是Google了一下神经网络,发现了一个非常不错的介绍神经网络的材料《神经网络入门(连载)》,以下转载自该连载中对于大脑中的神经元的描述,我觉得非常清楚:

在人的生命的最初9个月内,这些细胞以每分钟25,000个的惊人速度被创建出来。神经细胞和人身上任何其他类型细胞十分不同,每个神经细胞都长着一根像 电线一样的称为轴突(axon)的东西,它的长度有时伸展到几厘米[译注],用来将信号传递给其他的神经细胞。神经细胞的结构如图1 所示。它由一个细胞体(soma)、一些树突(dendrite) 、和一根可以很长的轴突组成。神经细胞体是一颗星状球形物,里面有一个核(nucleus)。树突由细胞体向各个方向长出,本身可有分支,是用来接收信号 的。轴突也有许多的分支。轴突通过分支的末梢(terminal)和其他神经细胞的树突相接触,形成所谓的突触(Synapse,图中未画出),一个神经 细胞通过轴突和突触把产生的信号送到其他的神经细胞。

每个神经细胞通过它的树突和大约10,000个其他的神经细胞相连。这就使得你的头脑中所有神经细胞之间连接总计可能有l,000,000,000,000,000个。这比100兆个现代电话交换机的连线数目还多。所以毫不奇怪为什么我们有时会产生头疼毛病!

神经细胞利用电-化学过程交换信号。输入信号来自另一些神经细胞。这些神经细胞的轴突末梢(也就是终端)和本神经细胞的树突相遇形成突触 (synapse),信号就从树突上的突触进入本细胞。信号在大脑中实际怎样传输是一个相当复杂的过程,但就我们而言,重要的是把它看成和现代的计算机一 样,利用一系列的0和1来进行操作。就是说,大脑的神经细胞也只有两种状态:兴奋(fire)和不兴奋(即抑制)。发射信号的强度不变,变化的仅仅是频 率。神经细胞利用一种我们还不知道的方法,把所有从树突上突触进来的信号进行相加,如果全部信号的总和超过某个阀值,就会激发神经细胞进入兴奋 (fire)状态,这时就会有一个电信号通过轴突发送出去给其他神经细胞。如果信号总和没有达到阀值,神经细胞就不会兴奋起来。这样的解释有点过分简单 化,但已能满足我们的目的。

注意对于我们的这幅图来说,比较关键的是树突(dendrite)是输入(input wires),轴突(axon)是输出(output wires).

现在我们模拟大脑中的神经元结构建立一个简单的模型-Logistic unit:
神经元模型-我爱公开课-52opencourse.com

其中\(x_1, x_2, x_3\)称为输入(来自与其他神经元的输入信号), \(x_0\)称为偏置单元(bias unit), \(\theta\)称为权重或参数, \(h_\theta(x)\)称为激活函数(activation function), 这里的激活函数用了sigmoid(logistic) function:

\[g(z) = \frac{1}{1+e^{-z}}\]

将多个神经元组织在一起,我们就有了神经网络,例如如下的三层结构的神经网络:

神经网络模型-我爱公开课-52opencourse.com

image

第一层称为输入层,第二层是隐藏层,第三层是输出层,注意输入层和隐藏层都存在一个偏置(bias unit). 其中:

\(a^{j}_i\) = j层第i个单元的激活函数

\(\Theta^{(j)}\) = 从第j层映射到第j+1层的控制函数的权重矩阵

对于上图,我们有如下的公式表示:

神经网络数学表示-我爱公开课-52opencourse.com

如果神经网络在第j层有\(s_j\)个单元,在第j+1层有\(s_{j+1}\)个单元,那么权重矩阵\(\Theta^{(j)}\)的纬度是\(s_{j+1} \times (s_j + 1)\)

 

4)  Model representation II (模型表示二)

前馈网络:向量化实现

上一节我们讲到的神经网络称为前馈网络,也称前向网络,这种网络只在训练过程会有反馈信号,而在分类过程中数据只能向前传送,直到到达输出层,层间没有向后的反馈信号,因此被称为前馈网络。感知机( perceptron)与BP神经网络就属于前馈网络。我们已经给出了这个神经网络的模型表示,但是不够简洁,下面我们来向量化这个模型(具体的过程推荐看视频,以下仅给出总结):

前馈网络向量化实现-我爱公开课-52opencourse.com

其他的网络结构:

除了上述的前馈网络外,神经网络还有其他的一些网络结构,譬如:
神经网络其他结构-我爱公开课-52opencourse.com

其中第一层仍是输入层,最后一层第四层数输出层,中间两层是隐藏层。

 

5)  Examples and intuitions I (例子和直观解释一)

本节和下一节的例子均是“逻辑代数”中的逻辑函数,因此有必要在这里交代一点逻辑代数的背景,以下文字摘录自清华大学出版社的《电子技术基础》6.2节,电子书链接来自Google book,同时会在例子的介绍中引用该书中的一些基本定义:

逻辑代数是描述客观事物逻辑关系的数学方法,它首先是由英国数学家乔治*布尔提出,因此也称为布尔代数,而后克劳德*香农将逻辑代数应用到继电器开关电路的设计中,所以又称为开关代数。和普通代数一样,在逻辑代数中用字母表示变量与函数,但变量与函数的取值只有0和1两种可能。这里的0和1已不再表示数量的大小,只代表两种不同的逻辑状态。我们把这种二值变量称为逻辑变量,简称为变量,这种二值函数称为逻辑函数,简称为函数。

非线性分类器例子-异或(XOR)/同或(XNOR)

我们的目标是利用神经网络实现一个逻辑代数中的同或运算,因此首先介绍一下同或运算和异或运算:

同或逻辑和异或逻辑是只有两个逻辑变量的逻辑函数。如果当两个逻辑变量A和B相同时,逻辑函数F等于1,否则F等于0,这种逻辑关系称为同或。反之,如果当两个逻辑变量A和B相异时,逻辑函数F等于1,否则F等于0,这种逻辑关系称为异或。

下图是一个同或预算的示例,其中\(x_1, x_2\)是二值变量(0, 1):

神经网络同或运算-我爱公开课-52opencouse.com

可以将其对应到一个非线性分类器,如下图所示:

同或逻辑非线性分类器-我爱公开课-52opencourse.com

同或逻辑和异或逻辑互补:

同或运算and异或运算-我爱公开课-52opencourse.com

同或运算和异或运算是逻辑代数中的复合运算,因此下面我们先介绍三种最基本的逻辑运算(与逻辑运算、或逻辑运算、非逻辑运算),同时分别介绍其对应的神经网络实现,最后将这几种基本的逻辑运算组合,形成最终的同或逻辑运算的神经网络。

与(AND)逻辑运算示例:

相信大家对于与(AND)运算很熟悉,其基本的表达式如下:

与逻辑运算表达式-我爱公开课-52oencourse.com

我们可以用一个简单的神经网络(一个神经元)表示与逻辑运算:

与逻辑运算神经元模型-我爱公开课-52opencourse.com

其中激活函数\(h_\Theta(x)\)可以用如下公式表示:
与逻辑运算神经网络hypothese表达式——我爱公开课-52opencourse.com

这里的激活函数是sigmoid(logistic) function,其图形表示如下:

激活函数-gmoid function-我爱公开课——52opencourse.com

对于g(z)来说,当z>=4.0时,g(z)约等于1;当z<=-4.0时,g(z)约等于-1. 对于上述激活函数,将二值(0, 1)变量\(x_1, x_2\)代入,我们得到如下的对应表:

与逻辑真值表-我爱公开课——52opencourse.com

可以看出,这里的神经网络激活函数\(h_\Theta(x)\)近似等于与逻辑运算。

 

或(OR)逻辑运算示例:

同理,我们也给出一个简单的神经网络模型来模拟或(OR)逻辑运算:

或逻辑运算神经网络模型-我爱公开课-52opencourse.com

将二值(0, 1)变量\(x_1, x_2\)代入,得到如下的或逻辑运算对应表:

或逻辑运算对应表-我爱公开课——52opencourse.com

6)  Examples and intuitions II (例子和直观解释二)

继续上一节的例子,我们介绍第三个基本的逻辑运算:非(NOT)逻辑运算

用一个简单的神经网络模型来模拟非(NOT)逻辑运算:

非逻辑运算-我爱公开课——52opencourse.com

得到的对应表如下:
非逻辑运算真值表-我爱公开课-52opencourse.com

非逻辑运算仅针对一个输入值,我们来表示一个略微复杂的逻辑表达式:

复杂逻辑表达式-我爱公开课-52opencourse.com

这个表达式等于1的前提是”当且仅当x1=x2=0".

可以用神经网络模拟如下:
两个非逻辑运算的神经网络模型-我爱公开课-52opencourse.com

好了,有了上述三个基本逻辑运算的基础和相关的神经网络模型表示,我们可以将其组合为一个略微复杂的”同或(XNOR)逻辑运算的神经网络“:

同或逻辑运算神经网络图-我爱公开课-52opencourse.com

对于这个神经网络,这里稍作一点解释,同或运算的表达式如下:

\[F = A \odot B = AB + \overline{A}\overline{B}\]

上图中第二层隐藏网络a1和a2分别代表了A And B和Not A And Not B,a1和a2又做了一次或逻辑运算就得到了同或逻辑运算。该神经网络对应的输出与同或运算的真值表相同:

同或运算真值表-我爱公开课——52opencourse.com

第6节的手写数字识别(分类)的演示请读者自行观看视频,此处略。

 

7)  Multi-class classification (多类分类问题)

逻辑回归的笔记中,我们谈到了多类分类问题,而神经网络同样可以应用于多类分类问题,只不过在表达上略有区别。首先来看一个机器视觉中分类的例子:

机器视觉分类问题-我爱公开课-52opencourse.com

对于一个输入图片,需要识别其属于行人、轿车、摩托车或者卡车中的一个类型,这是一个多类分类的问题。用神经网络表示如下:

机器视觉神经网络分类模型-我爱公开课-52opencourse.com

 

其中输出\(h_\Theta(x)\)是一个4维向量,如下表示:

神经网络输出多分类问题表示-我爱公开课——52opencourse.com

当向量的某个元素为1,其他为0时,代表分类结果为某个为1元素所对应的类别。这与之前逻辑回归中的多类分类表示不同,在逻辑回归中,输出y属于类似于{1, 2, 3,4}中的某个值,而非一个向量。因此,如果要训练一个多类分类问题的神经网络模型,训练集是这样的:

多类分类问题神经网络模型训练集-我爱公开课——52opencourse.com

特别注意\(y^{(i)}\)是一个向量。

本章到此结束,下一讲将会将神经网络的学习问题。转载请注明出处"我爱公开课”,谢谢。

参考资料:

第八课“神经网络的表示”的课件资料下载链接,视频可以在Coursera机器学习课程上观看或下载: https://class.coursera.org/ml
PPT   PDF

http://en.wikipedia.org/wiki/Neural_network

http://en.wikipedia.org/wiki/Artificial_neural_network

神经网络编程入门

神经网络入门连载

http://library.thinkquest.org/29483/neural_index.shtml

http://home.agh.edu.pl/~vlsi/AI/xor_t/en/main.htm

http://en.wikipedia.org/wiki/NOR_logic

http://en.wikipedia.org/wiki/Logic_gate

清华大学出版社的《电子技术基础》,google book

分类:机器学习 | 用户: (3.2k 分)
修改于 用户:
有一段重复了

谢谢,刚看了一下,是这一段吧:

神经细胞利用电-化学过程交换信号。输入信号来自另一些神经细胞...

已删除多余的段落。

1个回答

0 投票

神经网络(Neural Networks)试图模拟人类大脑的进行学习,普适性应该很高。

文中提到的神经重布线实验(neuro-rewiring experiments)很有意思。

用户: (2.4k 分)

推荐fandy看看这个系列:

神经网络入门连载

这个系列对应的那本"游戏编程中的人工智能技术"非常酷,周末我大致看了一下,觉得神经网络、遗传算法在游戏中运用的如此之妙真的是出乎意料了,AI的前途很光明!

貌似很有意思,AI应用在游戏中,一定要拜读下,谢谢
...