正则化

机器学习(Machine Learning)- 吴恩达(Andrew Ng) 学习笔记(十)

久未见 提交于 2020-02-06 23:45:46
Advice for applying machine learning Decide what to try next Debugging a learning algorithm 调试学习算法 Suppose you have implemented regularized linear regression to predict housing prices. \[ J(\theta) = \frac{1}{2m} \left[ \sum_{i=1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda\sum_{j=1}^m\theta_j^2 \right] \] However, when you test your hypothesis on a new set of houses, you find that it makes unacceptably large errors in its predictions. What should you try next? 假如你已经完成了房价预测的正则化线性回归(也就是最小化代价函数 \(J\) 的值),然而在你测试新的样例时发现产生了巨大的误差。要想改进这个算法你该怎么办? 可选的方法: Get more training examples 用更多的训练样本(收集样本耗费太大精力)

二、正则表达式、文本正则化、编辑距离

心已入冬 提交于 2020-02-06 11:47:33
目录 二、正则表达式、文本正则化、编辑距离 2.1 Regular Expressions 2.1.1 基本的正则表达式模式 2.1.2 Disjunction(析取)、Grouping、以及优先级顺序 2.1.5 更多操作符(小结) 2.1.6 正则表达式替换、捕获组 2.2 Words 2.3 语料 2.4 文本正则化 2.4.1 利用 Unix 工具粗糙的分词和正则化 2.4.3 中文分词:最大匹配算法 2.4.4 词形还原以及词干提取 2.4.5 Byte-Pair Encoding(BPE) 2.5 最小编辑距离 最小编辑距离算法 参考: 二、正则表达式、文本正则化、编辑距离 文本正则化的目的是将文本转换成一种更方便使用、更标准的表达形式。正则表达是一个其中的一个强有力的工具。对于大部分语言的处理,通常第一步需要做分词,这一类任务叫做 Tokenization 。另一个很重要的步骤是 Lemmatization(词形还原,例如英文中 is, are, am 都是 be,对于中文这一步,主要是简繁转换等,主要用于处理词法复杂的语言) 。 Stemming(词干提取,通常是是分离后缀) 。文本正则化通常也包含 句子分割 ,例如以句号或者感叹号分割。 编辑距离 是基于编辑的次数(增删改)比较给定两个字符串之间的相似度。 2.1 Regular Expressions 类似于

机器学习小白学习笔记---day3---线性模型(岭回归、lasso、线性模型【svm、logistic回归】)

ⅰ亾dé卋堺 提交于 2020-02-05 23:49:22
机器学习小白学习笔记之scikit-learn 最近刚把西瓜书啃完,一大堆理论让脑子真的是一团浆糊,说实话看的基本只有一个概念哈哈哈,效果不高,但是让我对与机器学习真的是整体有了一个大的了解,但是并没能将每个课后作业都完成,甚至很多公式推导也没实现,太难了,让我着手于实践,古人云实践出真知,又拿起了另一本书《Introduce to Mashine Learning with python》 昨天上一节,学习完了knn分类回归,这一节继续往下学,自然而然地学到线性模型,线性模型在实际运用中还是相当广泛的。 用于回归的线性模型: 单一特征的预测结果是一条直线,双特征是一个平面,而高维度的则是一个超平面。 我们继续来看最常见的线性回归模型: 线性回归(普通最小二乘法) 线性回归寻找最佳的参数w(斜率、权重、系数),和b(截距),使得对训练集的预测值与真hide回归目标值y之间的均方误差最小。 在高位数据集中,线性模型将体现的更加强大,但同时会产生过拟合风险,根据书本,通过波士顿房价数据集进行预测。 我们会发现一个情况: 测试集的分数远远低于训练集的分数,显而易见就是产生了过拟合,所以我们应该找到一个可以控制复杂度的模型,标准线性回归最常用的替代方法之一就是 岭回归 。 岭回归 其实预测方法和最小二乘法相同,但是做了一下正则化(附带上拟合约束,希望系数尽可能小

深层神经网络之四:神经网络进一步优化

半城伤御伤魂 提交于 2020-02-05 04:14:20
1.学习率的设置 学习率设置过大时参数将不会收敛,设定过小时虽然能保证收敛性,但是会大大降低优化速度。为解决设定学习率的问题,TensorFlow提供了一种更加灵活的学习率设置方法——指数衰减法。tf.train.exponential_decay函数实现了指数衰减学习率。通过这个函数,可以先使用较大的学习率来快速得到一个比较优的解,然后随着迭代的继续逐步减小学习率,使得模型在训练后期更加稳定。exponential_decay函数会指数级地减小学习率,它实现了以下代码的功能: decayed_learning_rate = \ learning_rate * decay_rate ^ ( global_step / decay_step ) 其中decayed_learning_rate为每一轮优化时使用的学习率,learning_rate为事先设定的初始学习率,decay_rate为衰减系数,decay_steps为衰减速度。下图显示了随着迭代轮数的增加,学习率逐步降低的过程。 tf.train.exponential_decay函数可以通过设置参数staircase选择不同的衰减方式。staircase的默认值为False,这时学习率随迭代轮数变化的趋势如上图灰色曲线所示。当staircase的值为True时,global_step / decay_steps会被转化为整数

《Batch Spectral Shrinkage for Safe Transfer Learning》论文解析

久未见 提交于 2020-02-05 00:32:16
文章全名为《Catastrophic Forgetting Meets Negative Transfer:Batch Spectral Shrinkage for Safe Transfer Learning》 1、摘要 这篇文章主要针对模型的fine-tune问题进行优化。众所周知,在许多模型的训练中,使用预训练好的模型进行fine-tune可以使模型的训练更加容易且结果更好。但是因为两个原因:灾难性遗忘(catastrophic forgetting)和负面迁移(negative transfer),使得fine-tune的效果降低了。本文提出了一种方法Batch Spectral Shrinkage (BSS),暂且翻译为批量光谱收缩,来克服这一情况。 2、介绍 主要介绍这两种导致fine-tune效果变差的原因。 首先是灾难性遗忘,即模型在学习与目标任务相关的信息时,容易突然失去之前所学的知识,导致过度拟合。第二个是负迁移,并非所有预先训练得到的知识都可以跨领域迁移,且不加选择地迁移所有知识对模型是有害的。 这里作者提到增量学习,并指出本文所提出的算法与增量学习的不同之处。增量学习可以学习新数据中的新知识,同时保证旧知识不被遗忘。但是与本文算法的目的不同,增量学习最终的目标是使得模型可以应用于新旧两个任务上,而BSS的目标是只作用于新的任务上。

线性回归 | 推导 | 笔记

左心房为你撑大大i 提交于 2020-02-03 17:36:18
博客部分公式有格式问题,请前往语雀: https://www.yuque.com/leesamoyed/bvsayi/hrobcr 一、最小二乘法(矩阵表达;几何意义): 1.线性拟合是用线去拟合样本点: 假设: 其中: , , 有: 事实上要拟合的曲线: 其中: (在这里 所以我们更倾向于把它写入 ) 2.最小二乘估计: 最小二乘法定义: 其中: 得到: 得到: 得到: 所以: 注意: 称为伪逆记为 第一个几何解释:距离和。 另一个几何解释:对于要拟合的直线我们从另一个角度看: ,把 想象为 维度的一个系数: ,横着看就是 样本点,竖着看就是一个 维,由 可以形成一个 维空间(一般 ), 形成的向量一般不在 维空间(存在噪声之类的),最小二乘法就是在 维空间中找到一条线,让 距离线(平面最近),那么很显然就是投影。 既然是投影就会垂直于 维空间,就会垂直于每一个向量,就有 ​ ​ ​ 显而易见的是,结果和我们之前推导的结果是一样的,所以从这个角度就很好推证。 这个就是把误差看成每个维度。 二、最小二乘法-概率角度: 概率视角: 假设: 其中: , , 有: :样本 :值 最小二乘估计: 假设存在噪声: 和最小二乘估计的 一样 (noise is Gaussian Dist) 三、正则化-岭回归-频率角度: Loss Function: , 个样本, (一般 ),如果样本纬度高

统计学习方法笔记

烂漫一生 提交于 2020-02-03 03:33:55
统计学习方法概论 1.1 统计学习 统计学习 (statistics learning): 计算机 基于 数据 构建 概率统计模型 并运用 模型 对 数据 进行 预测与分析 。也称为 统计机器学习 (statistics machine learning)。 统计学习的特点: 以 计算机及网络 为平台,是建立在计算机及网络之上的; 以 数据 为研究对象,是数据驱动的学科; 目的是对 数据 进行 预测与分析 ; 统计学习以 方法 为中心,统计学习方法构建 模型 并应用模型进行预测与分析; 是 概率论、统计学、信息论、计算理论、最优化理论及计算机科学等 多个领域的交叉学科; // 现在我们所说的机器学习,往往是指 统计机器学习 。 统计学习的对象 数据(data) 。 首先呢,统计学习从数据出发,提取数据的特征,抽象出数据中的模型,发现数据中的知识,最终又回到对数据的分析预测中去。 其次,作为统计学习的对象,数据是多样的,它包括存在于计算机及网络上的各种 数字 、 文字 、 图像 、 视频 、 音频 数据以及它们的组合。 关于数据的基本假设: 同类数据具有一定的统计规律性。 (什么叫“同类数据”:具有某种共同性质的数据,比如英文文章,互联网网页,数据库中的数据等,它们具有统 计规律性 ,所以可以用 概率统计方法 来进行处理。比如,可以用随机变量描述数据中的特征

正则化

 ̄綄美尐妖づ 提交于 2020-02-03 01:45:31
文章来源 本文是作者摘抄 且行且安~ 的文章, 当时由于不懂w变化,故留用于以后随时查看,【侵删】 目录 一、Why & What 正则化 1 概念 2、先讨论几个问题: 二、一般正则项 三、深入理解 一、Why & What 正则化 我们总会在各种地方遇到正则化这个看起来很难理解的名词,其实它并没有那么高冷,是很好理解的 首先,从使用正则化解决了一个什么问题的角度来看:正则化是为了防止过拟合, 进而增强泛化能力。用白话文转义,泛化误差(generalization error)= 测试误差(test error),其实就是使用训练数据训练的模型在测试集上的表现(或说性能 performance)好不好 过拟合 如上图,红色这条“想象力”过于丰富上下横跳的曲线就是过拟合情形。结合上图和正则化的英文 Regularizaiton-Regular-Regularize,直译应该是:规则化(加个“化”字变动词,自豪一下中文还是强)。什么是规则?你妈喊你6点前回家吃饭,这就是规则,一个限制。同理,在这里,规则化就是说给需要训练的目标函数加上一些规则(限制),让他们不要自我膨胀。正则化,看起来,挺不好理解的,追其根源,还是“正则”这两字在中文中实在没有一个直观的对应,如果能翻译成规则化,更好理解。但我们一定要明白,搞学术,概念名词的准确是十分重要,对于一个重要唯一确定的概念

机器学习——正规方程,正则化

Deadly 提交于 2020-02-01 21:48:14
一、正规方程(Normal equation): 对于某些线性回归问题,正规方程方法很好解决; \(\frac{\partial}{\partial\theta_j}J(\theta_j)=0\) ,假设我们的训练集特征矩阵为 X(包含了 x0)并且我们的训练集结果为向量 y,则利用正规方程解出向量 \(\theta=(X^TX)^{-1}X^Ty\) 注意: \((X^TX)^{-1}\) 如果特征数量n较大,运算代价就很大,一般小于10000即可;只适用于线性模型; 二、正则化: 解决过拟合问题: 1.丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA ) 2.正则化。 保留所有的特征,但是减少参数的大小( magnitude )。 如果我们的模型是: \(h_\theta(x)=\theta_0x_0^0+\theta_1x_1^1+...+\theta_nx_n^n\) 正是这些高次项导致了过拟合的产生,所以去减小他们系数的大小就好了。修改代价函数,给他们的系数设置惩罚; 修改后的代价函数: \(J(\theta)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2]\) 其中 \(\lambda\

线性模型L2正则化——岭回归

匆匆过客 提交于 2020-02-01 13:27:20
1 from sklearn.model_selection import train_test_split 2 from sklearn.linear_model import LinearRegression 3 from sklearn.datasets import load_diabetes 4 X,y=load_diabetes().data,load_diabetes().target 5 X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=8) 6 lr=LinearRegression().fit(X_train,y_train) 7 print("the coefficient:{}".format(lr.coef_)) 8 print('the intercept:{}'.format(lr.intercept_)) 9 print("the score of this model:{:.3f}".format(lr.score(X_test,y_test))) 1 from sklearn.linear_model import Ridge 2 ridge=Ridge().fit(X_train,y_train) 3 print("the coefficient:{}".format