算法面试八股文『 基础知识篇 』

博客介绍

近期在准备算法面试,网上信息杂乱不规整,出于强迫症就自己整理了算法面试常出现的考题。独乐乐不如众乐乐,与其奖励自己,不如大家一起嗨。以下整理的内容可能有不足之处,欢迎大佬一起讨论。

PS:内容会持续更新与优化,欢迎大家指正。


前方高能!正文来了

什么是深度学习?

深度学习是机器学习的一个分支,核心思想是使用深度神经网络来模拟和解决复杂的问题。深度神经网络是一种由多层神经元组成的模型,通常包含输入层、多个隐藏层和输出层。深度学习涉及获取大量结构化或非结构化数据,并使用复杂算法训练神经网络,通过执行复杂的操作来提取隐藏的模式和特征。

什么是多层感知机(MLP)?

多层感知机(Multilayer Perceptron,MLP)是一种人工神经网络模型,它由多个神经元层次组成,包括输入层、隐藏层和输出层。MLP是一种前馈神经网络,其中信息只能在一个方向上传递,从输入层经过隐藏层到输出层。单层感知器只能对具有二进制输出 (0,1) 的线性可分类进行分类,但 MLP 可以对非线性类进行分类。除输入层外,其他层中的每个节点都使用非线性激活函数。输入层、传入的数据和激活函数基于所有节点和权重相加从而产生输出。MLP 使用反向传播的方法来优化节点的权重。在反向传播中,神经网络在损失函数的帮助下计算误差,从误差的来源向后传播此误差(调整权重以更准确地训练模型)。

什么是数据规范化(Normalization)?

规范化是一种对数值的特殊函数变换方法,也就是说假设原始的某个数值是x,给它套一个起规范化作用的函数,对规范化之前的数值x进行转换和缩放,形成一个规范化后的数值。规范化将越来越偏的分布拉回到标准化的分布,使得激活函数的输入值落在激活函数对输入比较敏感的区域,从而使梯度变大,加快学习收敛速度,免梯度消失的问题。可以分为两大类:第一类规范化操作是对每个神经元的激活值进行Normalization,例如BatchNorm、LayerNorm、InstanceNorm、GroupNorm等方法都属于这一类。另一类规范化操作是对神经网络中连接相邻隐层神经元之间的权重进行规范化,Weight Norm就是其中的一种典型方法。

什么是正则化?具体怎么分类?

机器学习中,向模型的损失函数添加正则项,这些项惩罚模型参数的大小,防止它们变得过于复杂,从而防止模型的过拟合。具体而言,在损失函数上加上某些规则或限制,缩小解空间,从而减少求出过拟合解的可能性。

  1. 经验正则化方法

    提前终止:假如我们在泛化误差指标不再提升后,提前结束训练,也是一种正则化方法,这大概是最简单的方法了。

    模型集成:另一种方法就是模型集成(ensemable),也就是通过训练多个模型来完成该任务,它可以是不同网络结构,不同的初始化方法,不同的数据集训练的模型,也可以是用不同的测试图片处理方法,总之,采用多个模型进行投票的策略。

    Dropout就属于经验正则化方法。

  2. 参数正则化方法

    L1正则化:通过向损失函数添加参数的绝对值之和(权值向量w中各个元素的绝对值之和)来实现,可以将一些参数变为零,从而实现特征选择,减少模型中不重要的特征的影响。适用场景:当有大量特征时,可以使用L1正则化来降低维度,去除不重要的特征,提高模型的解释性和泛化能力。适用于稀疏特征的情况,即大部分特征对结果的影响很小,只有少数特征对结果有显著贡献。

    L2正则化:通过向损失函数添加参数的平方和(权值向量w中各个元素的平方和)来实现,可以使参数的值趋向于较小的值,但不会使它们变为零。适用场景:当模型存在共线性(多个特征高度相关)时,L2正则化可以减小特征之间的相关性,提高模型的稳定性。适用于需要保留所有特征的情况,但希望防止参数过大的情况。

  3. 隐式正则化方法

    前两种正则化方法都应该算作显式的正则化方法,因为在做这件事的过程中, 我们是有意识地知道自己在做正则化。但是还有另一种正则化方法,它是隐式的正则化方法,并非有意识地直接去做正则化,却甚至能够取得更好的效果,这便是数据有关的操作,包括归一化方法和数据增强,扰乱标签。

什么是玻尔兹曼机?

玻尔兹曼机是一类深度学习模型,类似于多层感知器的简化版本。这个模型有一个可见的输入层和一个隐藏层——只是一个两层的神经网络,可以随机决定一个神经元应该打开还是关闭。节点跨层连接,但同一层的两个节点没有连接。

逻辑回归和线性回归对比?

  1. 逻辑回归:逻辑回归通常用于解决分类问题,即预测结果为两个类别中的一个,输出为一个概率值,可以用于确定一个样本属于某个类别的概率。逻辑回归的训练速度通常较快,特别是在大规模数据集上。逻辑回归使用极大似然法作为参数估计方法。
  2. 线性回归:线性回归只能用于解决回归问题,通常用于连续数值的预测问题,例如房价预测,输出为一个实数值,可以表示某个连续变量的估计值。当因变量与自变量之间存在线性关系时,线性回归通常能够提供良好的拟合效果。线性回归使用最小二乘法作为参数估计方法。

逻辑回归可以理非线性问题吗?

可以的,只要用kernel trick就行了,也就是我们在SVM中常常用到的核函数。

分类问题有哪些评价指标?每种的适用场景。

  1. 准确度(Accuracy):预测正确的样本数量占总量的百分比。准确率有一个缺点,就是数据的样本不均衡,这个指标是不能评价模型的性能优劣的。
  2. 精确度(Precision):在模型预测为正样本的结果中,真正是正类别所占的百分比
  3. 召回率(Recall):在实际为正样本中,被预测为正样本所占的百分比
  4. F1分数(F1-Score):是调和平均数,用于平衡精确度和召回率。
  5. ROC曲线:展示了在不同分类阈值下真正例率(召回率)与假正例率之间的权衡关系。
  6. PRC曲线:展示了不同阈值下的精确度和召回率之间的权衡关系。
  7. 混淆矩阵(Confusion Matrix):混淆矩阵是预测分类和真实分类构成的矩阵,包括真正例、假正例、真负例和假负例(TP/FP/TN/FN),可以用于分析不同类别的错误类型。

什么是激活函数?作用是什么?

激活函数用于确定神经元是否应该被激活,引入激活函数是为了增加神经网络模型的非线性,它接受输入和偏置的加权和作为任何激活函数的输入。Sigmoid、ReLU、Leaky ReLU、Tanh都是常见的激活函数。

详细介绍各个激活函数和适用场景。

Sigmoid:将输入映射到 (0, 1) 之间,输出值具有平滑的S形曲线,常用于二分类问题。
S ( x ) = 1 1 + e − x \begin{equation} S(x)=\frac{1}{1+e^{-x}} \end{equation} S(x)=1+ex1

在这里插入图片描述

ReLU:对于正输入,输出是输入本身,对于负输入,输出是0。ReLU是非线性激活函数,对于神经网络,在每个隐藏层添加Relu激活函数,一次前向传播过程中,层与层之间在做stack操作;两层之间,上一层经过Relu后,传入下一层,下一层的每个神经元里面含有了上一层的add操作。这样,stack和add操作相互交融,使得Relu有了非线性表达能力(多分段线性)。此外,神经网络基本都是以mini-batch的方式进行训练,针对于多次step来说,因为每个step训练的都是不同的“细小”的网络,某种程度上,也可以看成add操作,更加增强了非线性,并且还有了类似ensemble的效果。因此,Relu激活函数不仅是非线性的、能缓解梯度消失;而且它还有防止过拟合的风险。
ReLU ⁡ ( x ) = max ⁡ ( 0 , x ) \begin{equation} \operatorname{ReLU}(\mathrm{x})=\max (0, \mathrm{x}) \end{equation} ReLU(x)=max(0,x)

在这里插入图片描述

Leaky ReLU:引入了小的负数斜率α(通常为0.01)来解决ReLU函数的负数输入问题。ReLU在取值小于零部分没有梯度,而LeakyReLU在取值小于0部分给一个很小的梯度。
LeakyReLU ⁡ ( x ) = { x , x > 0 α x , x ≤ 0 \begin{equation} \operatorname{LeakyReLU}(x)=\left\{\begin{aligned} x & , x>0 \\ \alpha x & , x \leq 0 \end{aligned}\right. \end{equation} LeakyReLU(x)={ xαx,x>0,x0

在这里插入图片描述

Tanh:将输入映射到 (-1, 1) 之间,输出值具有S形曲线,适用于中心化和标准化数据,比Sigmoid更常用。
tanh ⁡ ( x ) = e x − e − x e x + e − x \begin{equation} \tanh (x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} \end{equation} tanh(x)=ex+exexex

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
操作系统与计算机基础面试八股文主要包括以下内容: 1. 计算机基础:包括计算机网络、数据结构、排序算法、操作系统、数据库等方面的知识。例如,计算机网络中的协议结构可以采用五层体系结构,其中应用层对应 OSI 的上三层,下四层和 OSI 相同。\[2\] 数据结构中的二叉树有不同的种类和遍历方式。排序算法可以包括冒泡排序、插入排序、选择排序等。 2. 操作系统:涉及操作系统的基本概念、进程管理、内存管理、文件系统等内容。例如,操作系统中的死锁及条件可以使用银行家算法来解决。\[1\] 3. 计算机语言:包括 C/C++、Java、Python 等编程语言的相关知识。例如,C++中的 struct 和 class 的区别,Java中的线程安全和多线程编程等。 4. 网络安全:涉及网络安全攻击的种类和防范措施。例如,安全攻击可以包括网络钓鱼、拒绝服务攻击、SQL 注入等。\[3\] 综上所述,操作系统与计算机基础面试八股文主要涵盖计算机基础知识、操作系统、计算机语言和网络安全等方面的内容。 #### 引用[.reference_title] - *1* [计算机基础面试备考知识点(八股文)](https://blog.csdn.net/weixin_44934424/article/details/115066562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [计算机网络面经八股文](https://blog.csdn.net/XiaoFengsen/article/details/125940951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值