梯度下降

机器学习——从线性回归到逻辑回归【附详细推导和代码】

那年仲夏 提交于 2020-11-24 06:34:45
本文始发于个人公众号: TechFlow ,原创不易,求个关注 <br> 在之前的文章当中,我们推导了线性回归的公式,线性回归本质是线性函数,模型的原理不难,核心是求解模型参数的过程。通过对线性回归的推导和学习,我们基本上了解了机器学习模型学习的过程,这是机器学习的精髓,要比单个模型的原理重要得多。 新关注和有所遗忘的同学可以点击下方的链接回顾一下之前的线性回归和梯度下降的内容。 一文讲透梯度下降法 详细推导线性回归模型 <br> 回归与分类 <br> 在机器学习当中,模型根据预测结果的不同分为两类,如果我们希望模型预测一个或者多个连续值,这类问题被称为是回归问题。像是常见的未来股票价格的估计、未来温度估计等等都算是回归问题。还有一类呢是分类问题,模型的预测结果是一个离散值,也就是说只有固定的种类的结果。常见的有垃圾邮件识别、网页图片鉴黄等等。 我们之前介绍的逻辑回归顾名思义是一个回归问题,今天的文章讲的呢是如何将这个回归模型转化成分类模型,这个由线性回归推导得到的分类模型称为 逻辑回归 。 <br> 逻辑回归 <br> 逻辑回归这个模型很神奇,虽然它的本质也是回归,但是它是一个分类模型,并且它的名字当中又包含”回归“两个字,未免让人觉得莫名其妙。 如果是初学者,觉得头晕是正常的,没关系,让我们一点点捋清楚。 让我们先回到线性回归,我们都知道,线性回归当中$y=WX+b$

吴恩达机器学习系列课程--个人笔记

半城伤御伤魂 提交于 2020-11-24 03:15:10
网址:https://www.bilibili.com/video/av50747658/ (b站找的有中文字幕的视频) 第一周 一、引言 1.1 欢迎 1.2 机器学习是什么 1.3 监督学习 1.4 无监督学习 二、单变量线性回归 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 I 2.4 代价函数的直观理解 II 2.5 梯度下降 2.6 梯度下降的直观理解 2.7 梯度下降的线性回归 2.8 接下来的内容 三、线性代数回顾 3.1 矩阵和向量 3.2 加法和标量乘法 3.3 矩阵向量乘法 3.4 矩阵乘法 3-5 矩阵乘法特征 (1)矩阵乘法不适用交换律 (2)矩阵乘法满足结合律 (3)单位矩阵是对角线(a11,a22,a33...)都等于1的矩阵 3-6 逆和转置 (1)逆矩阵 只有m*m的矩阵有逆矩阵 I是单位矩阵 (2)转置 aij的矩阵,变成aji 第2周 四、多变量线性回归 4-1 多功能 当用多个参数预测房价时,需使用多元线性回归,向量表示为: 4-2 多元梯度下降法 4-3 梯度下降法实践 1-特征缩放 4-4 梯度下降法实践 2-学习率 4-5 特征和多项式回归 4-6 正规方程 4-7 正规方程及不可逆性(可选) 五、Octave教程 5-1 基本操作 ~= 表示 逻辑不等于 5-2 移动数据 5-3 计算数据 5-4 数据绘制 5-5

中国AI技术领先,是因为数学好?美国杂志直指中美数学教育差距

守給你的承諾、 提交于 2020-11-23 06:24:50
机器之心报道 参与:蛋酱、泽南 转载自公众号:机器之心 美国 CS 专业超过 64% 博士生和近 70% 的硕士生是留学生,数学博士学位有一半授予了非美国公民,中国和印度学生占大部分。 上个星期,一位华人留学生题为「亚洲人数学能力其实很差?」的视频登上了热搜。 「知其然而不知所以然,他们仅仅擅长使用而不追求真理。」这名女生认为大多数亚洲人学习数学时注重运用却不关心原理推导,论据有一定的道理,不过结论引发了不少人的吐槽。 很快,博主「他们都叫我雪姨」新发布了一个视频向大家道歉,表示个人经历不能指代群体,有关亚洲人数学很差的言论十分不正确。在应试教育为主,升学压力很大的国内,如果说学生们花费如此大的精力却不能把一门学科学明白,确实非常可怕,数学是当代高等教育最重要的基础是有目共睹的。 7 月份,2020 阿里巴巴全球数学竞赛结束 ,活动创办者马云如此评价数学的重要性。 有趣的是,在数学水平太差这件事上,大洋彼岸的美国人和我们有着同样的担忧。在亚洲人数学很差的视频在国内流行的同时,美国《国家利益杂志》刊载了一篇文章给出了完全相反的观点:因为中国人数学好,在人工智能领域里中国正在逐渐成为决定性力量。 这篇报道在开篇即提到:「忘记人工智能本身吧,它只是一个数学问题。美国没有培养出足够擅长数学的公民,因此无法保持统治地位。」 以下为美国《国家利益杂志》报道的主要内容:

使用开源可视化工具来理解你的 Python 代码

狂风中的少年 提交于 2020-11-15 17:57:21
VizTracer 工具可以可视化并跟踪 Python 代码,让你可以更深入地了解其工作原理。 随着 Python 项目变得越来越大、越复杂,理解起它来就变得充满挑战性。即使是你自己独自编写了整个项目,也不可能完全知道项目是如何工作的。为了能更好的理解你的代码,调试和分析代码变得至关重要。 VizTracer 是一个这样的工具,它通过跟踪和可视化 Python 代码的执行过程,来帮助你对代码的理解。无需对源代码进行任何更改,VizTracer 即可记录函数的入口 / 出口,函数参数 / 返回值以及任意变量,然后通过 Trace-Viewer 使用直观的谷歌前端界面来显示数据。 下面是一个运行 蒙特卡洛树搜索 的例子: 每个函数都在时间线上以堆栈的形式记录和可视化,这样你就可以看到在运行程序时发生了什么。你可以放大查看任意特定点的详细信息: VizTracer 还可以自动记录函数参数和返回值。你可以单击函数条目并查看详细信息: 或者你可以创建一个全新的信号,并用它来记录变量。例如,这显示了执行梯度下降时的成本值: 与其他设置复杂的工具相比,VizTracer 使用起来非常简单,并且没有任何依赖关系。你可以从 pip 安装它: pip install viztracer 你也可以通过输入来跟踪你的程序( <your_script.py> 是你脚本的名称): viztracer

ASLP Kaldi

别说谁变了你拦得住时间么 提交于 2020-11-08 10:19:36
ASLP(Audio, Speech and Language Processing Group ,音频、语音和语言处理组 ) 位于西北工业大学,隶属于陕西省语音和图像信息处理重点实验室(SAIIP)。 ASLP小组成立于1995年。ASLP小组的使命是促进音频,语音和语言处理学科内的广泛学科的跨学科研究和教育。目前,ASLP集团的研究范围包括人机语音通信,语音和音频信号处理,视听处理,多媒体内容分析和检索。 在2011年,该组由三位正教授,一位副教授,四位兼职教授和三十多位博士和硕士生组成...... ASLP 官网: http://www.npu-aslp.org ASLP Kaldi Github : https://github.com/robin1001/kaldi-aslp/blob/master/README.md ASLP Kaldi 是对 Kaldi 的增强,增强的功能有: nnet 增强 Batch 正则化 标准 LSTM 、 BLSTM without projection 延迟( Latency )控制 BLSTM Warp CTC 以及 Eesen 版本的 CTC Skip training & decode 图网络(如多输入、多输出、 add 与拼接) 行卷积 GRU FSMN 语音端点检测( VAD ) 在线识别 并行化增强 BSP ( Bulk

干货 :人工神经网络背后的数学原理

℡╲_俬逩灬. 提交于 2020-11-05 11:11:11
Datawhale干货 作者:贾博文,浙江大学,Datawhale原创作者 本文 约8000字 ,建议 阅读22分钟 审稿人:阿泽,Datawhale成员,复旦大学计算机硕士,目前在携程担任高级算法工程师。 前言 提到人工智能算法,人工神经网络(ANN)是一个绕不过去的话题。但是对于新手,往往容易被ANN中一堆复杂的概念公式搞得头大,最后只能做到感性的认识,而无法深入的理解。正好最近笔者本人也在经历这个痛苦的过程,本着真理越辩越明的态度,索性坐下来认真的把这些头大的问题梳理一番,试试看能不能搞清楚ANN背后的数学原理。 其实ANN 的流程概括来说倒不是很复杂,以最简单的前馈神经网络为例,无非就是 搭建网络架构(含有待定参数) 通过比较输出与标签的差值定义损失函数(自变量为待定参数的函数) 随机给出一组初始参数 给出一个(sgd)/ 一批(Minibatch)训练样例(包括ANN的输入值和输出值) 前向传播得到预测标签和损失 利用梯度下降算法从后往前调整网络参数(误差反向传播,BP) 得到所有参数值 得到ANN并使用 其中4、5、6里的内容是需要反复迭代的(注意6是双重循环)。 在ANN的一堆操作里,梯度下降算法是一个相对独立的过程,不妨就让我们从梯度下降算法开始吧。 一、梯度下降到底在干什么 其实这个问题非常简单,只是大家被梯度下降复杂的过程搞蒙了,忘记了它的本质

机器学习笔记——梯度下降优化方案(

痴心易碎 提交于 2020-11-02 11:34:08
机器学习笔记——梯度下降优化方案 一、梯度下降粒度优化 1.1 Batch gradient descent 1.2 Stochastic gradient descent 1.3 Mini-batch gradient descent 1.4 三种方法的代码分析 二、梯度下降参数优化 2.1 步长与梯度的关系 2.2 AdaGrad 与 RMSProp 2.4 AdaDelta 2.5 Momentum 与 Nesterov Momentum 2.6 Adam 2.7 AdaBelief 一、梯度下降粒度优化 1.1 Batch gradient descent 批量梯度下降(Batch gradient descent)是根据所有样本训练得到的梯度来更新参数。每更新一次参数便要用到所有的训练样本数据集,决定了批量梯度下降法训练时间长、收敛速度缓慢。 1.2 Stochastic gradient descent 随机梯度下降(Stochastic gradient descent)每次仅根据单个样本 ( x i , y i ) (x^i,y^i) ( x i , y i ) 计算得到的梯度来更新参数。随机梯度下降计算简单收敛速度快,但收敛过程易震荡不稳定。不稳定的特征有好有坏,好处在于可以让参数跳出局部最优,坏处在于收敛结果不精确。 下面是批量梯度下降与随机梯度下降的示意图

神经网络、BP算法、深度学习

老子叫甜甜 提交于 2020-10-29 00:48:51
众所周知,深度学习正逐渐获得越来越多的关注,并且毫无疑问成为机器学习领域最热门的话题。 深度学习可以被看作是一组算法的集合,这些算法能够高效地进行多层人工神经网络训练。 在本章,读者将学习人工神经网络的基本概念,并且接触到新近基于Python开发的深度学习库,从而更进一步去探索机器学习研究领域中这一最为有趣的内容。 使用人工神经网络对复杂函数建模: 我们在第2章中从人工神经元入手,开始了机器学习算法的探索。对于本章中将要讨论的多层人工神经网络来说,人工神经元是其构建的基石。 人工神经网络的基本概念是建立在对人脑如何应对复杂问题的假想和模型构建上的。 在过去的十年中,神经网络研究领域的许多重大突破成就了当前的深度学习算法,此算法可以通过无类标数据训练的深度神经网络(多层神经网络)进行特征检测。 神经网络不仅仅是学术领域的一个热门话题,连Facebook、微软及谷歌等大型科技公司都在人工神经网络和深度学习研究领域进行了大量的投入。 时至今日,由于能够解决图像和语音识别等复杂问题,由深度学习算法所驱动的复杂神经网络被认为是最前沿的研究成果。 我们日常生活中深度学习的常见例子有谷歌图片搜索和谷歌翻译,谷歌翻译作为一款智能手机应用,能够自动识别图片中的文字,并将其实时翻译为20多种语言。 当前一些主要的科技公司正在积极开发更多有趣的深度神经网络应用

【深度学习】L1正则化和L2正则化

放肆的年华 提交于 2020-10-28 09:32:42
在机器学习中,我们非常关心模型的预测能力,即模型在新数据上的表现,而不希望过拟合现象的的发生,我们通常使用正则化(regularization)技术来防止过拟合情况。正则化是机器学习中通过显式的控制模型复杂度来避免模型过拟合、确保泛化能力的一种有效方式。如果将模型原始的假设空间比作“天空”,那么天空飞翔的“鸟”就是模型可能收敛到的一个个最优解。在施加了模型正则化后,就好比将原假设空间(“天空”)缩小到一定的空间范围(“笼子”),这样一来,可能得到的最优解能搜索的假设空间也变得相对有限。有限空间自然对应复杂度不太高的模型,也自然对应了有限的模型表达能力。这就是“正则化有效防止模型过拟合的”一种直观解析。 L2正则化 在深度学习中,用的比较多的正则化技术是L2正则化,其形式是在原先的损失函数后边再加多一项:$\frac{1}{2}\lambda\theta_{i}^2$,那加上L2正则项的损失函数就可以表示为:$L(\theta)=L(\theta)+\lambda\sum_{i}^{n}\theta_{i}^2$,其中$\theta$就是网络层的待学习的参数,$\lambda$则控制正则项的大小,较大的取值将较大程度约束模型复杂度,反之亦然。 L2约束通常对稀疏的有尖峰的权重向量施加大的惩罚,而偏好于均匀的参数。这样的效果是鼓励神经单元利用上层的所有输入,而不是部分输入

机器学习:梯度下降

不羁的心 提交于 2020-10-26 23:18:33
作者|Renu Khandelwal 编译|VK 来源|Medium 什么是梯度下降? 梯度下降法是一种减少成本函数的迭代机器学习优化算法,使我们的模型能够做出准确的预测。 成本函数(C)或损失函数度量模型的实际输出和预测输出之间的差异。成本函数是一个凸函数。 为什么我们需要梯度下降? 在神经网络中,我们的目标是训练模型具有最优的权值(w)来进行更好的预测。 我们用梯度下降法得到最优权值。 如何找到最优的权值? 这可以用一个经典的登山问题来最好地解释。 在登山问题中,我们想要到达一座山的最低点,而我们的能见度为零。 我们不知道我们是在山顶上,还是在山的中间,还是非常接近底部。 我们最好的选择是检查我们附近的地形,并确定我们需要从哪里下降到底部。我们需要迭代地做这件事,直到没有更多的下降空间,也就是我们到达底部的时候。 我们将在稍后的文章中讨论,如果我们觉得已经到达了底部(局部最小值点),但是还有另一个山的最低点(全局最小值点),我们可以做什么。 梯度下降法帮助我们从数学上解决了同样的问题。 我们将一个神经网络的所有权值随机初始化为一个接近于0但不是0的值。 我们计算梯度,∂c/∂ω,它是成本相对于权重的偏导数。 α是学习率,有助于对梯度下降法调整权重 我们需要同时更新所有神经元的权重 学习速率 学习率控制着我们应该在多大程度上根据损失梯度调整权重。学习速率是随机初始化的。 值越低