自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 李宏毅机器学习笔记(十九)——对ML模型的攻击和防御

文章目录一.背景二.对模型进行攻击1.基本思想2.相似度限制3.训练参数  前言:老师课上举的例子都与图像相关,其实其他领域也是同理的。一.背景  神经网络不仅是要用在研究上,最后更多的肯定要在各种有意义的应用中。那么安全性就显得尤为重要,要去对抗恶意攻击(注意,这里不是说仅仅是对抗杂讯,而是所谓的,不暴露出弱点)。即使是垃圾邮件识别,人脸识别这种最基础广泛的领域,也存在着大量的攻击对抗。因此,对这方面的研究是十分重要的。二.对模型进行攻击1.基本思想  既然是恶意攻击,首先我们还是要保证,我们

2020-09-01 19:33:52 1087

原创 李宏毅机器学习笔记(十八)——可解释性机器学习

文章目录一.可解释的概念和意义二.局部可解释性1.移除组成要素2.改变组成要素3.局限性三.全局可解释性1.反向寻找理想输入2.输入正则化  前言:老师的课程中强调了课上举的例子都与图像相关,其实其他领域也是同理的。一.可解释的概念和意义  所谓的可解释性其实也分为两种,一种是局部可解释性,一般指的是机器说明如何判断这个样例(例如分类问题中,机器如何将一张猫的图片分成猫);另一种是全局可解释性,一般指的是机器如何对总体进行特征判断(例如分类问题中,机器认为猫长什么样子)  为什么我们需要这种可解释性

2020-08-31 14:38:21 2676

原创 李宏毅机器学习笔记(十七)——无监督学习(五):词向量嵌入

文章目录一.One-hot表示的缺陷二.基于词频的词嵌入方法三.基于预测的词嵌入方法一.One-hot表示的缺陷  其实很容易想到,One-hot表示法最关键的问题是非常的不灵活,我们无法很好的表示每个词和每个词的关系二.基于词频的词嵌入方法三.基于预测的词嵌入方法...

2020-08-30 14:30:55 693

原创 李宏毅机器学习笔记(十六)——无监督学习(四):自编码器

文章目录一.自编码器的引入二.深层自编码器三.自编码器的应用四.自编码器的改进  前排提醒这篇文章长度比之前的要长很多。一.自编码器的引入  首先我们回到PCA,我们有x−x‾≈∑i=1mciui=x^x-\overline x\approx \sum_{i=1}^mc_iu_i=\hat xx−x≈∑i=1m​ci​ui​=x^,我们要寻找的是uuu,之后的ccc其实就是降维后的向量。我们要想让我们的损失最少,那当然就是这个约等于号尽量取等,然后由于uuu是个正交矩阵,因此我们可以左右同乘uuu,得

2020-08-20 19:10:16 1718 1

原创 李宏毅机器学习笔记(十五)——无监督学习(三):非线性数据降维

文章目录一.线性数据降维的不足二.一.线性数据降维的不足  线性的降维的特点在于,不论是用什么方法,总之最后的效果是用一个线性变换(数学上形式为乘一个矩阵),将高维空间映射到一个低维空间;而线性变换无法分析出一些曲面等的情况,如下图所示。因此我们就需要去寻找非线性的方式。二....

2020-08-18 12:20:22 1113

原创 李宏毅机器学习笔记(十四)——无监督学习(二):线性数据降维与推荐系统

文章目录一.什么是数据降维二.主成分分析(PCA)1.基本思想2.数学推导一.什么是数据降维  对于无标签的数据,我们很多时候并不是想将其分类,而是所谓的根据原始特征,精炼出一定的更有代表性的特征,这样既可以减小维度压缩数据量,同时相当于是对数据的一种清洗(例如去除冗余共线性的数据)。  因此我们的目标就是,对k个n维的行向量数据xix_ixi​(下标表示的是第几个输入数据),我们找到一个函数fff,使得f(x)=zf(x)=zf(x)=z,其中zzz为m维行向量,代表着xxx转化后的特征,m<

2020-08-15 11:59:38 507

原创 李宏毅机器学习笔记(十三)——无监督学习(一):聚类算法

文章目录一.什么是数据聚类二.基于GMM的聚类一.什么是数据聚类  如果我们想要对全部都是无标签的数据进行分类,这时候数据聚类就是一大类方式。聚类的意思顾名思义,按照一定的法则,将部分“相近的”数据聚成同一类,给它们相同的标签即可。  下面介绍几种比较有代表性的聚类方法。二.基于GMM的聚类  在半监督学习中我们已经讲过在部分数据有标签的情况下如何用GMM进行所谓的样本训练了。在这里,我们要自己去定义类的数量,之后随机初始化对应的多元高斯分布,然后以同样的操作使用EM算法即可。(当然最开始计算每个

2020-08-14 13:24:19 699

原创 李宏毅机器学习笔记(十二)——半监督学习

文章目录一.什么是半监督学习二.分类问题生成模型中的EM算法三.基于低密度分离的分类1.自我学习2.基于信息熵的正则化3.半监督SVM一.什么是半监督学习  在现实中,所谓的数据是很多的,例如图片数据,随处拍都会有很多,然而所谓的有标签的数据,最开始都是要由人来定义的,因此有标签数据集其实也是比较珍贵的。而半监督学习总的来说,顾名思义,半监督意味着做训练的时候,既使用了有标签数据,又使用了没有标签的数据。要注意,如果我们这样做了,一般来说没有标签的数据都是远大于有标签的数据的,否则如果有标签数据更多的话

2020-08-13 15:00:48 1003

原创 李宏毅机器学习笔记(十一)——图神经网络(GNN)

文章目录一.与图相关的问题二.基于空间特征的图神经网络(spatial-based)1.NN4G2.DCNN/DGC3.MoNET/GAT4.GIN三.基于频谱的图神经网络  前言:这部分是比较新兴的内容,内容杂且难度较大,这里只是根据课上所讲加上自己的理解去总结一小部分最浅显的内容,主要用于科普,不能用于GNN的入门一.与图相关的问题  这里的图,指的不是现实中的图片,图片我们使用CNN即可;这里指的是数据结构中的图。这种图是非常结构化的数据,而且由于数据是多对多的关系,因此具有最高的普适性。然而很

2020-08-12 10:38:24 1867

原创 李宏毅机器学习笔记(十)——循环神经网络(RNN)

文章目录一.时间序列模型与神经网络的改进一.时间序列模型与神经网络的改进  本次我们以各种语言处理的问题为例。我们先考虑一个实体识别问题:即输入一句话,输出对应的每个字在这句话中属于哪种定义的实体。  如果我们套用以前的思路,首先我们要先确定我们的输入。当然输入有很多种处理方式,最简单和常用的就是One-hot词编码,把每个词对应c...

2020-08-11 14:26:54 812 1

原创 李宏毅机器学习笔记(九)——卷积神经网络(CNN)

文章目录一.图像的特点二.卷积神经网络的原理1.卷积层2.池化层3.全连接层三.查看CNN的学习内容四.CNN的其余应用一.图像的特点  以前的问题中,我们的输入是一个明显的n维向量,但对于一张图片,或者是可以与图片类比的内容(比如说棋盘等等),如果我们想要使用神经网络,按照以前的思想,那就是把图片也转化成一个n维向量。  当然,依靠之前的神经网络,反正是全连接的,那转化方式就不重要了,直接摊平去按照以前的方式去处理就好了,但是随之麻烦也就来了,因为图片具有以下特点:  1.图片一般比较大,经常是1

2020-08-07 21:33:01 528

原创 李宏毅机器学习笔记(八)——训练神经网络的进阶技巧

文章目录一.训练后可能出现的问题二.解决欠拟合1.更高级的优化器2.新的激活函数三.解决过拟合1.早期停止——面向第三步优化2.正则化——面向第二步优化3.Dropout——面向第一步优化一.训练后可能出现的问题  类似于简单的回归问题,各种神经网络也会存在着欠拟合和过拟合的情况。我们这里不考虑数据集中的噪声和数据量的影响,就考虑使用神经网络的三个步骤。对于一个足够复杂的神经网络,如果出现了欠拟合情况,那必然是没有计算出对应的比较好的解,即第三步选择最好的函数的问题;而过拟合的情况代表着训练集上已经足够

2020-08-06 13:56:48 483

原创 李宏毅机器学习笔记(七)——反向传播与全连接神经网络的构建

文章目录一.反向传播(BP算法)二.简单全连接神经网络的构建一.反向传播(BP算法)  虽然名字听起来高大上,但是意思其实就是从后往前,通过链式求导来求得梯度,之后再用梯度下降等方法来进行参数更新而已。  如图所示,就是一层函数套一层函数就行,那这个式子再带入损失函数去参数www和bbb求导,也都不是难事了。具体的推导老师讲的很详细,这里就不细讲了。二.简单全连接神经网络的构建  笔者以异或问题为例,建立一个如下的二层的神经网络。代码格式和风格参考了其他的课程。  首先我们可以整理一下训练神经

2020-08-04 21:29:40 342

原创 李宏毅机器学习笔记(六)——深层网络的意义

文章目录一.通用近似定理二.深层网络的合理性一.通用近似定理  通俗的来说,这个定理可以推出一个两层的全连接神经网络,就可以做一切神经网络可以做的事情了。  当然,定理的具体表达和严格证明都涉及到不少泛函的东西,因此这里不做严格证明,但笔者整理了一下各处的思路,可以用如下方法去考虑:  总得来说,想解决的问题有三类:布尔表达式判断,分类,和拟合函数。  对于布尔表达式判断,就是有多个布尔输入,最后判断对还是错。学过数字逻辑就可以知道,任何的逻辑表达式都可以化为标准与或式,如下图所示。然而单层的神经

2020-08-04 14:30:19 350

原创 李宏毅机器学习笔记(五)——全连接神经网络

文章目录一.线性分类的弊端与神经网络的引入二.深度学习的三个步骤三.全连接神经网络的结构一.线性分类的弊端与神经网络的引入  我们可以看如下的异或二分类问题,我们显然可以看到,我们使用一条直线显然是无法将其分开的。  但是我们可以用以下思路来想:我们是否可以转变一下特征,做一个所谓的线性变换,使其可以线性可分?这样当然是可以的而且有多种方式,比如视频中所示的方式,再或者是x1x_1x1​和x2x_2x2​之间的差的绝对值等等,做完这个转换后我们就明显可以看出是线性可分的了。  但是问题在于,这个

2020-08-03 20:42:17 663

原创 李宏毅机器学习笔记(四)——分类问题

文章目录一.二分类问题1.朴素贝叶斯一.二分类问题  在二分类中,最终我们要的输出就是两个数值,代表着分到了第一类还是第二类。对比一下我们的回归问题,对于每个点输出的值是在整个实数范围内的,因此分类不能直接的用回归的思想去解决,要另辟蹊径。1.朴素贝叶斯  最简单而直观的想法,当然就是转换成对于一个nnn维向量输入,我们去计算它属于这两个类的概率,哪个概率大,就分到哪个类。  那对于这个nnn维向量输入xxx而言,设这两个类分别是C1C_1C1​和C2C_2C2​,那我们想要计算的,就是xxx在类

2020-08-03 15:10:15 645

原创 李宏毅机器学习笔记(三)——梯度下降及优化

文章目录一.梯度下降二.自适应步长1.与牛顿迭代法的联系一.梯度下降  梯度下降算法相信大家都不陌生,这里就是展示一下公式,这里的θ\thetaθ是一个向量。θ(n)=θ(n−1)−η∇L(θ(n−1))\theta^{(n)}=\theta^{(n-1)}-\eta\nabla L(\theta^{(n-1)})θ(n)=θ(n−1)−η∇L(θ(n−1))  下面是一张体现普通梯度下降的图,可见走的方向恰好与梯度方向相反,且正比于偏导数。二.自适应步长  普通的梯度下降的问题在于,我们的步长

2020-07-26 23:42:29 2179 1

原创 李宏毅机器学习笔记(二)——欠拟合与过拟合

文章目录一.误差的来源1.实例——手枪打靶2.打靶与回归的联系3.方差的来源4.偏差的来源5.欠拟合与过拟合的概念二.减少误差的策略一.误差的来源  这里的误差就是指我们在测试集上的误差,而不是训练集上的损失值。1.实例——手枪打靶  我们把每次的打靶看成是独立同分布的样本,中心为我们的目标。我们很容易可以看出,误差来源于两个部分:偏差(bias)和方差(variance)。其中偏差指的是样本的平均位置与中心的距离;而方差则是离散程度,我们可以看出要想有比较小的总误差,这两方面都要兼顾。2.打靶

2020-07-12 22:42:47 666

原创 李宏毅机器学习笔记(一)——线性回归

文章目录一.什么是回归二.回归的简单例子与步骤1.提出问题2.建立函数模型3.评价预估函数的好坏一.什么是回归  总的来说,其实回归就是一种预测。我们给出了一些已有的数据和对应的结果,然后我们又给出了一些未知结果的数据,然后我们去找出一个函数,去尽量好的得到对应的结果,这其实就是广义上的回归问题。  当然,这个所谓的"函数"可以是任何的函数,因为我们的目标就是得到好的预测结果——注意,是对我们本来不知道结果的数据的预测结果。二.回归的简单例子与步骤1.提出问题  教授的例子十分的有趣,是一个根绝

2020-07-12 20:08:27 538

原创 HIT软件构造第七章知识点总结

文章目录一.并发编程1.进程与线程2.JAVA中的线程3.交错和竞争4.避免交错的一些方法一.并发编程1.进程与线程  并发编程中的模块类型:进程/线程。  进程:其实就是正在运行的一个程序。每个进程都有自己对应的虚拟内存,之间互不影响,每个进程之间没有耦合或者是非常松的耦合,之间通过消息传递进行协作。运行一个进程时,仿佛这个进程独占计算机的全部资源一样。一般而言,一个java虚拟机同时只运行一个进程。  线程:一个进程中可能有多个线程,多个线程之间可以共享内存(但要属于这个进程),但每个线程都有

2020-06-04 12:10:24 314

原创 HIT软件构造第六章三到五节知识点总结

文章目录三. 断言与防御式编程1.断言2.断言vs异常3.防御式编程四.代码调试1.调试过程2.调试工具  本篇继续总结第六章的知识点三. 断言与防御式编程1.断言  断言主要是开发阶段使用,用于假设某些假设是否成立,一旦不成立则会抛出AssertionError  有以下两种形式:  (1).assert 表达式; 相当于一个if判断,只是失败了就抛出异常。  (2).assert 表达式:信息; 额外在抛出异常的时候显示出对应的信息。  断言一般用在各种不变量,以及前置条件和后置条件的检

2020-05-27 16:30:05 441

原创 HIT软件构造第六章一二节知识点总结

文章目录一.健壮性与正确性1.健壮性与正确性的定义2.健壮性与正确性的测量二.错误与异常处理1.java中的错误与异常处理2.异常处理  第六章的内容为面向健壮性的编程。涉及到的内容很多,完全不仅是所谓的“那我只要对每种情况都好好考虑就行了”这种想法和追求就能完善的。因此就来依次讲解相关内容。一.健壮性与正确性1.健壮性与正确性的定义  两者之间的区别和共性等内容已经在1.2节中详细的介绍过了。  一般在UI和外部接口等等,我们尽可能追求健壮性,而在内部的实现逻辑和算法等等,我们尽可能追求正确性。

2020-05-23 17:31:10 490

原创 HIT软件构造第五章第三节知识点总结

文章目录三.面向可维护性的构造技术  接着上一篇来讨论,本文章的重点是面向可维护性的构造技术。三.面向可维护性的构造技术

2020-05-20 17:31:42 316

原创 HIT软件构造第五章第二节知识点总结

文章目录二.面向可维护性的设计模式1.创建模式A.工厂方法模式  接着上一篇来讨论,本文章的重点是面向可复用性的设计模式。二.面向可维护性的设计模式1.创建模式  这些类的作用主要就是为了创建对象,对应采取的模式就是不同的创建模式,分为以下几种模式。A.工厂方法模式  使用ADT的时候,如果我们想创建一个对象,我们就要调用构造函数,而构造函数不会在接口中而是在实现类中,因此抽象程度降低了,而且导致用户可能会依赖于这个实现类的实现方式,而不是接口。为了解决这些,工厂模式应运而生。  ...

2020-05-19 09:58:39 396

原创 HIT软件构造第五章第一节知识点总结

文章目录一.可扩展性的度量与构造原则1.软件的维护和运维2.可维护性的度量3.模块化设计思想和准则  本章的整体结构与上一章相似,只是内容从可复用性变为了可维护性,也是先进行介绍度量和原则,然后介绍一些设计模式和构造技术。一.可扩展性的度量与构造原则  可扩展性,可维护性,灵活性,可适应性,可管理性,支持性等等这些词,含义类似,都是我们这章所讨论的内容。1.软件的维护和运维  软件维护主要是修复错误和改善性能,是软件生命周期的最后一部分,一般都在软件发布之后,软件的大部分成本都来自于维护阶段。一个

2020-05-16 00:23:20 450 1

原创 HIT软件构造第四章知识点总结

文章目录一.可复用性的度量、形态与外部表现1.可复用性简介一.可复用性的度量、形态与外部表现1.可复用性简介  虽然说复用有不同层级,但是总的来说可复用性就是我们重复使用我们已经编写好的模块。因此过程分为两部分:在某些模块编写出可复用度高的代码,然后在某些模块尽量调用这些代码。  越抽象的东西,可复用性一般越强。因此总的来说,java中接口的可复用性大于抽象类,抽象类大于一般类。  可复...

2020-04-23 22:30:09 453

原创 HIT软件构造第三章四五节知识点总结

文章目录一.OOP的基本概念1.对象与类本节的内容为ADT的实现的技术基础——面向对象编程一.OOP的基本概念1.对象与类    现实世界中的对象可映射为编程中的对象,其中状态即映射为字段,行为则映射为方法。    类的概念是在对象的概念产生后产生的。类是对一组对象统一的表达,是一个抽象的概念,现实世界中并不存在类的实体;而对象则是类的实例化。    类中的字段和方法分为属于类的和属于...

2020-04-12 01:00:39 453

原创 HIT软件构造第三章第三节知识点总结

文章目录一.ADT的基本概念二.典型的类型和操作本节的内容为抽象数据类型(ADT)的讲解。一.ADT的基本概念    数据抽象:由一组操作所刻画的数据类型;强调的是操作而不是具体如何存储的。    可以看出对应的抽象可能有多种实现方式。所以可见ADT是由操作定义的,与内部实现方式无关;一般用户也不关心实现方式,只关心暴露出的操作(通过规约来达成一致)。二.典型的类型和操作    类型上...

2020-03-30 16:55:22 511

原创 HIT软件构造第三章一二节知识点总结

文章目录一.数据类型与类型检验1.JAVA语言中的数据类型2.数据类型检查3.可变性与不可变性4.快照图一.数据类型与类型检验1.JAVA语言中的数据类型    在JAVA中,有两大类数据类型:基本数据类型与对象数据类型。一般而言,基本数据类型的类型名称都为小写(int,float等),而对象数据类型的类型名称(其实就是类名,接口名,标准等)首字母一般大写(String,BigInteger...

2020-03-29 17:48:58 584

原创 HIT软件构造第二章第二节知识点总结

文章目录一.广义软件构造过程1.编码过程(1).编程语言(2).建模语言(3).配置语言2.代码评审3.动态代码分析4.调试与测试5.重构二.一.广义软件构造过程总的分为以下的5个过程1.编码过程    其实就是我们通俗来说的写代码的过程。    我们这里主要考虑构建代码时所用的语言。    按照用途划分为:编程语言,建模语言,配置语言,构建语言。    按照形态划分为:基于语言学的...

2020-03-26 18:28:00 362

原创 HIT软件构造第二章第一节知识点总结

文章目录一.软件开发的生命周期1.从无到有2.从有到好二.软件开发的传统过程模型1.线性过程2.迭代过程3.目前存在的模型(1).瀑布模型一.软件开发的生命周期1.从无到有    总的而言有六个周期,分别是计划,分析,设计,实现,测试,部署    计划:考虑面向的市场,需要的时间,人员分配规划等等    分析:分析受众等软件需求方的多方面的需求    设计:将需求落实成文档,如类图,流...

2020-03-23 19:35:06 340

原创 HIT软件构造第一章知识点总结

文章目录一.软件构造过程的多维视图1.三个维度(1).时间维度(2).编码维度(3).层级维度2.八种视图(1).构建阶段,瞬时角度的代码层级视图(2).构建阶段,周期角度的代码层级视图(3).构建阶段,瞬时角度的模块层级视图(4).构建阶段,周期角度的模块层级视图(5).运行阶段,瞬时角度的代码层级视图(6).运行阶段,周期角度的代码层级视图(7).运行阶段,瞬时角度的模块层级视图(8).运行阶...

2020-03-19 21:44:01 584

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除