准备好春招了么?上科大小哥的面试题与复习资料祝你寒假无忧

去年上海科技大学 AI 实验室开源了一份深度学习面试题集锦,它从数学基础、经典机器学习算法、深度学习算法以及编程语言等方面提供了众多面试题。此外,这一个项目是作者在准备 2018 年春招实习过程中的总结,内容以计算机书籍的学习笔记为主,在整理重点知识的同时会尽量保证知识的系统性。读者们快来试试能闯过多少道春招面试题吧!

项目地址:https://github.com/ShanghaiTechAIClub/DLInterview

因为上科大的项目并没有提供配套的答案,所以这些问题只能检测自身知识掌握度。不过后文给出了另一个春招/秋招的复习资源项目,它包含计算机科学的大量精要知识与教程,这份复习资源目前已有超过 45K 的收藏量。此外,机器之心在上个月推出了一个年末答题小程序,中间也有许多涉及数学基础与算法的趣味题目,我们同样把它加在其中。

数学基础相关

1. 概率与数理统计

一个袋子里有 100 个黑球和 100 个白球,每次随机拿出两个球丢掉,如果丢掉的是不同颜色的球,则从其他地方补充一个黑球到袋子里,如果颜色相同,则补充一个白球到袋子里。问:最后一个球是黑球和白球的概率分别为多大?

2. 智商题

A 容器中有 4L 沙子,B 容器中有 4L 米,假设米和沙子密度一样。有一个 C 容器是 300ml, 第一步,用 C 从 A 中舀 300ml 到 B 中,混合均匀,第二步,用 C 从 B 冲舀 300ml 到 A 中混合均匀。再重复第一步和第二步,问这四步之后,A 中的米和 B 中的沙子谁多?

3. 答题挑战赛

机器之心 AI 答题挑战赛中我们对线性代数、概率论和最优化方法等数学基础提了一些有意思的题目:

1. 数学中哪一个子领域以随机事件为研究对象?

A. 概率论;B. 微积分;C. 数学分析;D. 线性代数

2. 概率论中的贝叶斯法则与下面哪个元素无关?

A. 事件概率;B. 自由概率;C. 条件概率;D. 联合概率

3. 在概率论中,中心极限定理与下列哪一项有关?

A. 均匀分布;B. 假设检验;C. 贝叶斯法则;D. 依概收敛

4. 在概率论中,大数定律与下列哪一项无关?

A. 数学方差;B. 条件概率;C. 独立性;D. 数学期望

5. 下面哪一个分布不属于连续型分布?

A. 指数分布;B. 均匀分布;C. 泊松分布;D. 正态分布

以上题目答案:ABDBC

6. 下面哪一项不是线性代数涉及的主题?

A. 行列式;B. 矩阵微分;C. 代数几何;D. 线性方程组求解

7. 一阶张量是什么?

A. 向量;B. 标量;C. 元组;D. 矩阵

8. 列向量左乘行向量得出什么?

A. 矩阵;B. 标量;C. 向量;D. 矢量

9. 矩阵的秩(rank)是指什么?

A. 最大线性相关向量组数;B. 对角线元素之和;C. 最大线性无关向量组数;D. 对角元素之差

10. 下面哪一项与雅可比(Jacobian)矩阵无关?

A. 线性代数;B. 微积分;C.Carl Gustav Jacob Jacobi;D. 概率论

以上题目答案:CAACD

11. 下列与梯度下降无关的是?

A. 最速下降法;B. 坐标下降法;C. 一阶导数;D. 随机梯度下降

12. 下列会使用 Hessian 矩阵的最优化方法是?

A. 拟牛顿法;B. 共轭梯度法;C. 梯度下降法;D. 牛顿法

13. 一般机器学习中所说的牛顿法是什么?

A. 概率论方法;B. 最优化方法;C. 微积分方法;D. 物理学方法

14. 在最优化方法中,共轭梯度法有什么特点?

A. 比梯度下降收敛快;B. 采用二阶梯度;C. 沿梯度向下降;D. 比牛顿法收敛

以上题目答案:BDBA

机器学习基础相关

1. 概率与统计相关

  • 最大似然估计和距离度量之间的关系是什么?

  • 如何理解最小二乘与最大似然估计

2. 线性代数相关

A 和 B 是两个矩阵,求 tr(A'B),A'指 A 的转置。(写出来后,我没有检查 AB 是否 size 相同,他说应该考虑这种边界条件,并说你考虑了 AB 是否空矩阵这是比较好的一点)。

3. 经典 ML 模型

3.1 SVM 模型

  • 讲一讲 SVM,知道多少说多少?为什么要用对偶问题求解?(今日头条)

  • 简单讲一下 BP 是如何计算的?

  • SVM 加核函数用过吗?讲一讲其中的差别?(今日头条)

  • 训练样本多,维度大就可以用核函数;如果样本少,用核函数比较容易过拟合

  • SVM 在训练的时候有没有遇到 hard example?(今日头条)

  • SVM 对 hard example 的应用很重要,先用一部分训练集训练一个模型,然后用剩下的一部分训练集的一部分做测试,把出错的再送入重新训练,重复二三次,效果会比较好

  • 怎样选择 SVM 核函数?多项式核和 RBF 核的关系?

  • 说一说 LR 和 SVM 的损失函数

3.2 PCA

  • 讲一下 PCA,为什么是方差最大?

  • 如何推导 PCA,具体针对推导问很多为什么。

3.3 XGBoost

  • 了解提升方法吗?你能解释一下最基础的 AdaBoost 算法,以及提升树算法吗?

  • XGBoost 了解吗?你能解释一下 XGBoost 的核心思想及主要做法吗?

3.4 其它

  • 讲一下生成模型判别模型有什么区别

  • 你觉得滴滴打车的拼车价是怎么计算出来的,详细描述。(路径规划,订单预测之类的)

  • 你觉得滴滴打车的溢价,1.1 倍,1.2 倍,这些数值是怎么计算出来的?(订单预测,当前司机数量),目的是什么?

  • 推导 BP,神经网络的求导及反向传播过程是怎么样的?(可以用均方损失函数

4. 答题挑战赛

机器之心 AI 答题挑战赛中我们对经典机器学习方法提了一些有意思的题目:

1. 如果没有非线性激活函数,10 层的神经网络和多少层的神经网络等效?

A.1 层;B. 以上都对;C.10 层;D.5 层

2. 对神经网络执行权重衰减或删除是什么操作?

A. 归一化;B. 正则化;C. 简化;D. 量化

3. 要获得损失函数表面的曲率信息,需要求解损失函数的什么结构?

A. 混淆矩阵;B.Jacobian 矩阵;C.Hessian 矩阵;D. 邻接矩阵

4. 不属于降维方法的是?

A.PCA;B. 自编码器;C.t-SNE;D. 支持向量机

5. 把参数分布吸引到球形域是什么正则化方法?

A.L2;B.L1;C.L0;D.L∞

以上题目答案:BBCDA

深度学习基础相关

1. CNN

  • CNN 为什么可以在 CV/NLP/Speech 等领域都可以使用?

  • 什么样的数据适合 Deep learning?

  • 1×1 卷积的作用是什么?

  • 给你几个输入张量与卷积核,你能手动算一下卷积得出的特征图吗?

  • 一维卷积是怎样做的,你能画一下它大概图示吗?

  • 从 AlexNet、VGG-Net 到 ResNet 介绍一下主流的卷积神经网络架构。

  • 从 Inception-V1 到 Inception-ResNet,介绍一下 Inception 家族的发展以及不同之处。

  • 你能介绍一下目标检测,及该任务主要使用的模型及方法吗?

2. 过拟合 (Overfitting)

  • 何为共线性,跟过拟合有啥关联?如何解决共线性这种问题?

  • 多变量线性回归中,变量之间由于存在高度相关关系而使回归估计不准确。

  • 如何解决 Overfitting 问题,主要有哪些方法?

3. 损失函数

  • 交叉熵相对熵(KL 散度)之间的关系是什么?KL 散度有哪些特性?

  • 你了解 SVM 常用的合页损失函数吗?它能不能用在深度模型上?

  • 你能解释一下 L1 和 L2 正则化的原理吗?这两种正则化有什么不同?

  • 为什么神经网络损失函数是非凸的,最优化非凸函数会遇到什么问题?

4. RNN

  • RNN 有什么缺陷以及 LSTM 是如何怎么解决的?

  • GRU 以及 Minimal GRU 都是什么样的,它们的运行机制以及精简的门控都是哪些?

  • 你能用函数抽象表达出循环神经网络吗?它与卷积神经网络的抽象表达有什么不同?

5. GAN

  • 介绍一下 GAN,讲一讲生成器和判别器以及他们的关系。

  • 原版生成对抗网络那个目标函数(极小极大博弈)能理解吗?能不能解释一下这个目标函数

  • WGAN 相比于 GAN 主要改进在哪里,你能解释一下 Wasserstein 距离?

6. 其它

  • 深度学习是万能的吗?什么地方不适用,如果给你一个任务,你如何选择用深度学习还是传统的如 SVM?

  • 深度学习的待学习的参数量和训练样本数量之间的关系是什么样的?

  • 什么是梯度消失和爆炸,解释一下它们形成的原因。

  • 为什么梯度相反的方向是函数下降最快的方向?

算法与数据结构

1. 二叉树

  • 二叉搜索树如何删除某个节点,先说思路后写代码 (今日头条)。

  • 二叉树之字形层次遍历,(正反正反)。

2. 链表

  • 一个链表,如何依次输出第一个,倒数第一个,第二个,倒数第二个(今日头条)。

  • 原址:变换为奇数在前 偶数在后,相对顺序不变。

  • 链表求和。

3. 查找

  • 给一个 float 数,如何求算术平方根.(今日头条)

4. 哈希

  • 要实现一个哈希表应该怎么做(根据要哈希的内容选择合适的哈希函数和冲突解决方案)。

5. 排序

一个 0-1 矩阵,每一排都是 0 在前 1 在后,问哪一排的 1 最多?(二分法)问有没有更简单的方法(每一排记录当前的最左边的 1 的位置,下一排的时候直接忽略右边的)问时间复杂度,猜测是 O(m+n)。

6. 搜索

  • 描述迪杰斯特拉算法。

  • 描述 dfs 和 bfs, 分别怎么实现?(栈和队列)。

7. 动态规划

  • 动态规划是什么, 动态规划和带记忆的递归有什么区别?(自顶而下和自底而上)

  • 0-1 背包问题的动态规划递归式怎么写?

  • 三角数堆,只能往左下或者右下走,从堆顶到堆底和最小是多少。(dp)

8. 其它

  • 若干个长度不同的数组,求最小区间,让每个数组都有数字在这个区间内?

  • 三种砖块,分别是 11,12,13,拼成 1N,有多少种拼法?时间复杂度多少?(今日头条)

  • 斐波那契数列。

  • 描述 KMP 算法。

  • 写代码:两个有序数组的合并。

编程语言相关问题

1. Python

  • 一个 python 的 dict,按照 key-value 存储,如何按照 value 排序。

  • static 的类有什么用。

  • 如何实现一个只能实例化一次的类。

  • 模板类是什么?

  • 纯虚函数和虚函数的区别是什么?

2. C++

  • 一个 dict,如果是 C++怎么做?一个 map,怎么按照 value 排序?

看了这么多题目,哪些会做哪些不会也就有一个明晰的了解。那么如何为年后的春招做准备呢?2018 年中山大学郑永川构建了一个准备秋招/春招的学习笔记:CS-Notes。该项目包含了计算机科学的大量精要知识与教程,目前该项目已经有超过 45K 的收藏量。

CS-Notes 项目从基础排序算法到编程理念展示了计算机科学的应知应会,该项目对机器学习开发者及入门读者也非常有用,例如 Linux 系统、面向对象的编程、Git 工具和代码可读性等。这些笔记都是作者根据对各类书籍的理解,并记录重要知识点而完成。

项目地址:https://github.com/CyC2018/CS-Notes

该项目的主体内容可分为 9 部分,其中算法介绍了基础的栈和队列、并查集、排序和查找等,操作系统介绍了现代计算机系统与 Linux 系统。其它如介绍了设计模式和基本思想的面向对象编程、世界上最先进的分布式版本控制系统 Git、以及 Java 和编程实践等都有涉及。

如下是该项目各类别的基本目录与内容,因为机器学习可能会常用到面向对象的编程方法,因此我们在后面简要介绍了这一章节中面向对象的基本思想。

算法 

  • 剑指 Offer 题解(目录根据原书第二版进行编排)

  • Leetcode 题解(做了一个大致分类,并对每种分类题型的解题思路做了总结)

  • 算法(排序、并查集、栈和队列、红黑树、散列表)

操作系统 

  • 计算机操作系统(进程管理、内存管理、设备管理、链接)

  • Linux(基本实现原理以及基本操作)

网络 

  • 计算机网络(物理层、链路层、网络层、运输层、应用层)

  • HTTP(方法、状态码、Cookie、缓存、连接管理、HTTPs、HTTP 2.0)

  • Socket(I/O 模型、I/O 多路复用)

面向对象 

  • 设计模式(实现了 Gof 的 23 种设计模式)

  • 面向对象思想(三大原则(继承、封装、多态)、类图、设计原则)

数据库 

  • 数据库系统原理(事务、锁、隔离级别、MVCC、间隙锁、范式)

  • SQL(SQL 基本语法)

  • Leetcode-Database 题解(Leetcode 上数据库题目的解题记录)

  • MySQL(存储引擎、索引、查询优化、切分、复制)

  • Redis(五种数据类型、字典和跳跃表数据结构、使用场景、和 Memcache 的比较、淘汰策略、持久化、文件事件的 Reactor 模式、复制)

Java 

  • Java 基础(不会涉及很多基本语法介绍,主要是一些实现原理以及关键特性)

  • Java 容器(包含容器源码的分析)

  • Java 虚拟机(运行时数据区域、垃圾收集、类加载)

  • Java 并发(线程使用方式、两种互斥同步方法、线程协作、JUC、线程安全、内存模型、锁优化)

  • Java I/O(NIO 的原理以及实例)

系统设计

  • 系统设计基础(性能、伸缩性、扩展性、可用性、安全性)

  • 分布式(分布式锁、分布式事务、CAP、BASE、Paxos、Raft)

  • 集群(负载均衡、Session 管理)

  • 攻击技术(XSS、CSRF、SQL 注入、DDoS)

  • 缓存(缓存特征、缓存位置、缓存问题、数据分布、一致性哈希、LRU、CDN)

  • 消息队列(消息处理模型、使用场景、可靠性)

  • 分布式问题分析(分布式事务、分布式锁、分布式 Session、负载均衡)

工具 

  • Git(一些 Git 的使用和概念)

  • Docker(Docker 基本原理)

  • 构建工具(构建工具的基本概念、主流构建工具介绍)

  • 正则表达式(参考 正则表达式必知必会)

编码实践 

  • 代码可读性(参考 编写可读代码的艺术)

  • 代码风格规范(Google 开源项目的代码风格规范)

  • 代码风格规范(Google 开源项目的代码风格规范)

入门测试题数学深度学习PCA算法XGBoost
6
相关数据
今日头条机构

“今日头条”是一款基于数据挖掘技术的个性化推荐引擎产品,它为用户推荐有价值的、个性化的信息,提供连接人与信息的新型服务,是国内移动互联网领域成长最快的产品之一。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

排序算法技术

排序算法是将一串数据依照特定排序方式进行排列的算法,最常用到的排序方式是数值顺序以及字典顺序。基本上,排序算法的输出必须遵守下列两个原则:输出结果为递增序列(递增是针对所需的排序顺序而言);输出结果是原输入的一种排列、或是重组。

混淆矩阵技术

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。矩阵的每一行表示预测类中的实例,而每一列表示实际类中的实例(反之亦然)。 这个名字源于这样一个事实,即很容易看出系统是否混淆了两个类。

动态规划技术

动态规划(也称为动态优化),是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划将复杂的问题分解成一系列相对简单的子问题,只解决一次子问题并存储它的解决方案(solution),下一次遇到同样的子问题时无需重新计算它的解决方案,而是简单地查找先前计算的解决方案,从而节省计算时间。动态规划适用于有最优子结构(Optimal Substructure)和重叠子问题(Overlapping Subproblems)性质的问题。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

判别模型技术

在机器学习领域,有一种分类方法将模型分为判别模型和生成模型(generative model)两种。 判别模型是一种对未知数据y与已知数据x之间关系进行建模的方法,是一种基于概率理论的方法。已知输入变量x,判别模型通过构建条件概率P(y|x)分布预测结果,或试图直接从输入x的空间学习映射到标签{0,1}(如感知器算法)的函数。生成模型则是考虑x与y之间的联合分布。 在实际应用中判别模型非常常见,如:逻辑回归(logistic regression),支持向量机(support vector machine), 提升方法(Boosting),条件随机场(conditional random fields),神经网络(neural network),随机森林(random forests)典型的生成模型则包括:高斯混合模型(Gaussian Mixture Model),隐马尔科夫模型(hidden markov model),简单贝叶斯(naive Bayes)等。不难看出两者的区别。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

核函数技术

核函数包括线性核函数、多项式核函数、高斯核函数等,其中高斯核函数最常用,可以将数据映射到无穷维,也叫做径向基函数(Radial Basis Function 简称 RBF),是某种沿径向对称的标量函数。最常应用于SVM支持向量机中

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

时间复杂度技术

在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。例如,如果一个算法对于任何大小为 n (必须比 n0 大)的输入,它至多需要 5n3 + 3n 的时间运行完毕,那么它的渐近时间复杂度是 O(n3)。

最大似然估计技术

极大似然估计是统计学中用来估计概率模型参数的一种方法

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

导数技术

导数(Derivative)是微积分中的重要基础概念。当函数y=f(x)的自变量x在一点x_0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f'(x_0) 或 df(x_0)/dx。

张量技术

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

大数定律技术

在数学与统计学中,大数定律又称大数法则、大数律,是描述相当多次数重复实验的结果的定律。根据这个定律知道,样本数量越多,则其算术平均值就越趋近期望值。大数定律很重要,因为它“保证”了一些随机事件的均值的长期稳定性。

数据库技术

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

假设检验技术

假设检验是推论统计中用于检验统计假设的一种方法。而“统计假设”是可通过观察一组随机变量的模型进行检验的科学假说。一旦能估计未知参数,就会希望根据结果对未知的真正参数值做出适当的推论。

线性回归技术

在现实世界中,存在着大量这样的情况:两个变量例如X和Y有一些依赖关系。由X可以部分地决定Y的值,但这种决定往往不很确切。常常用来说明这种依赖关系的最简单、直观的例子是体重与身高,用Y表示他的体重。众所周知,一般说来,当X大时,Y也倾向于大,但由X不能严格地决定Y。又如,城市生活用电量Y与气温X有很大的关系。在夏天气温很高或冬天气温很低时,由于室内空调、冰箱等家用电器的使用,可能用电就高,相反,在春秋季节气温不高也不低,用电量就可能少。但我们不能由气温X准确地决定用电量Y。类似的例子还很多,变量之间的这种关系称为“相关关系”,回归模型就是研究相关关系的一个有力工具。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

支持向量机技术

在机器学习中,支持向量机是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

最速下降法技术

在数学中,最速下降法或固定相法或鞍点法是拉普拉斯逼近积分方法的扩展,使复平面中的轮廓积分变形以通过静止点(鞍点)附近, 大致在最速下降或固定相的方向。

操作系统技术

操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

路径规划技术

路径规划是运动规划的主要研究内容之一。运动规划由路径规划和轨迹规划组成,连接起点位置和终点位置的序列点或曲线被称为路径,构成路径的策略则被称为路径规划。路径规划在很多领域都具有广泛的应用,如机器人的自主无碰行动;无人机的避障突防飞行等。

中心极限定理技术

中心极限定理是概率论中的一组定理。中心极限定理说明,在适当的条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正态分布。这组定理是数理统计学和误差分析的理论基础,指出了大量随机变量之和近似服从正态分布的条件。

目标函数技术

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

降维技术

降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

二叉搜索树技术

二叉查找树,也称为二叉搜索树、有序二叉树或排序二叉树,它的优势在于查找、插入的时间复杂度较低。二叉查找树是基础性数据结构,用于构建更为抽象的数据结构,如集合、多重集、关联数组等。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

哈希函数技术

散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。

微积分技术

微积分(Calculus)是高等数学中研究函数的微分(Differentiation)、积分(Integration)以及有关概念和应用的数学分支。它是数学的一个基础学科。内容主要包括极限、微分学、积分学及其应用。微分学包括求导数的运算,是一套关于变化率的理论。它使得函数、速度、加速度和曲线的斜率等均可用一套通用的符号进行讨论。积分学,包括求积分的运算,为定义和计算面积、体积等提供一套通用的方法 。

线性代数技术

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

共轭梯度法技术

共轭梯度法(Conjugate Gradient)是介于最速下降法与牛顿法之间的一个方法,它仅需利用一阶导数信息,但克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hesse矩阵并求逆的缺点,共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是解大型非线性最优化最有效的算法之一。

拟牛顿法技术

拟牛顿法是一种以牛顿法为基础设计的,求解非线性方程组或连续的最优化问题函数的零点或极大、极小值的算法。当牛顿法中所要求计算的雅可比矩阵或Hessian矩阵难以甚至无法计算时,拟牛顿法便可派上用场。

生成模型技术

在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下。 它给观测值和标注数据序列指定一个联合概率分布。 在机器学习中,生成模型可以用来直接对数据建模(例如根据某个变量的概率密度函数进行数据采样),也可以用来建立变量间的条件概率分布。

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

XGBoost技术

XGBoost是一个开源软件库,为C ++,Java,Python,R,和Julia提供了渐变增强框架。 它适用于Linux,Windows,MacOS。从项目描述来看,它旨在提供一个“可扩展,便携式和分布式的梯度提升(GBM,GBRT,GBDT)库”。 除了在一台机器上运行,它还支持分布式处理框架Apache Hadoop,Apache Spark和Apache Flink。 由于它是许多机器学习大赛中获胜团队的首选算法,因此它已经赢得了很多人的关注。

WGAN技术

就其本质而言,任何生成模型的目标都是让模型(习得地)的分布与真实数据之间的差异达到最小。然而,传统 GAN 中的判别器 D 并不会当模型与真实的分布重叠度不够时去提供足够的信息来估计这个差异度——这导致生成器得不到一个强有力的反馈信息(特别是在训练之初),此外生成器的稳定性也普遍不足。 Wasserstein GAN 在原来的基础之上添加了一些新的方法,让判别器 D 去拟合模型与真实分布之间的 Wasserstein 距离。Wassersterin 距离会大致估计出「调整一个分布去匹配另一个分布还需要多少工作」。此外,其定义的方式十分值得注意,它甚至可以适用于非重叠的分布。

相对熵技术

相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD)[1],信息散度(information divergence),信息增益(information gain)。 KL散度是两个概率分布P和Q差别的非对称性的度量。 KL散度是用来 度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。

红黑树技术

红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文中获得的。

暂无评论
暂无评论~