前端面试题汇总
JavaScript
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
性能
linux
前端资料汇总
一、优化算法及其特点:
1. BGD批量梯度下降:优点:梯度预测是稳定的
缺点:需要一次更新所有样本,计算速度非常慢
不适用于大数据集,不能在线更新模型
2. SGD随机梯度下降:优点:一次只选一部分样本,运算快,效果好
缺点:易受噪声点影响,参数更新的方差大,迭代并不是每次都向着最优解方向进行,可能无法达到全局最优解,且学习曲线震荡。容易被困在鞍点
适用于需要在线更新的模型,适用于大规模训练样本情况
3. SGD+Momentum
在随机梯度中引入了动量 Momentum,SGD方法的一个缺点是其更新方向完全依赖于当前batch计算出的梯度,因而十分不稳定。SGDM就是不仅仅考虑负梯度方向,还考虑此时动量的方向(上一步的前进方向的惯性方向),然后将两个方向进行合并,即下一步更新参数的方向。特点:用滑动平均来更新,而不是当前梯度,可有效减少震荡,更平缓加快收敛速度。
适用于有可靠的初始化参数
4. Nestorov动量:NAG 会先在前一步的累积梯度上有一个大的跳跃,然后衡量一下梯度做一下修正,这种预期的更新可以避免我们走的太快。 (选沿当前方向走一步,再计算终点梯度方向,进而得到最终方向。)
5. AdaGrad:特点:采用自适应调节,减少了学习率的手动调节。对于经常更新的参数,我们已经积累了大量关于它的知识,不希望被单个样本影响太大,希望学习速率慢一些;对于偶尔更新的参数,我们了解的信息太少,希望能从每个偶然出现的样本身上多学一些,即学习速率大一些。缺点是学习率单调递减至0,可能会使得训练过程提前结束,即便后续还有数据也无法学到必要的知识。需要快速收敛,训练复杂网络时;适合处理稀疏梯度
6. RMSProp:给历史数据和新数据都设一个权重,缓解退化问题。使用的是指数加权平均,旨在消除梯度下降中的摆动,与动量的效果一样,某一维度的导数比较大,则指数加权平均就大,某一维度的导数比较小,则其指数加权平均就小,这样就保证了各维度导数都在一个量级,进而减少了摆动。允许使用一个更大的学习率η
需要快速收敛,训练复杂网络时;适合处理非平稳目标 - 对于RNN效果很好
7. Adam:是RMSProp和Momentum的结合,对梯度和学习率都用了滑动平均,还有一个纠偏,优点主要在于经过偏差校正后,每一次迭代学习率都有个确定范围,使得参数比较平稳。需要快速收敛,训练复杂网络时;善于处理稀疏梯度和处理非平稳目标的优点,也适用于大多非凸优化 - 适用于大数据集和高维空间
二、CNN经典结构
1. AlexNet:采用ReLU作为非线性的激活函数、利用多个(2个)GPU同时训练、使用数据增强来提高模型的准确率防止过拟合、利用Dropout算法防止过拟合、LRN归一化层的使用
结构:CONV1 ->MAX POOL1 ->NORM1 ->CONV2 ->MAX POOL2 ->NORM2 ->CONV3 ->CONV4 ->CONV5->Max POOL3 ->FC6->FC7 ->FC8
2. VGG:16~19层 卷积核更小,层数更深
每组卷积都使用3x3的卷积核原因:一方面可以减少参数,另一方面相当于进行了更多的非线性映射,可以增加网络的拟合/表达能力
params计算params=(本层卷积核长*宽*上层卷积核厚)*本层卷积核厚 池化层没有params
3. GoogLeNet:22层 去除了全连接层(占据了网络的大部分参数),使用了全局均值池化,大大减小了参数量
1*1卷积层的作用:用于减少维度,还用于修正线性激活(relu)
(1)采用了模块化的结构(inception结构),方便增添和修改
(2)网络最后采用了average pooling来替代全连接,可将准确率提升百分之0.6
(3)虽然移除了全连接,但依然使用了Dropout
(4)为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度(辅助分类器)
更多面试题
**《350页前端校招面试题精编解析大全》**内容大纲主要包括 HTML,CSS,前端基础,前端核心,前端进阶,移动端开发,计算机基础,算法与数据结构,项目,职业发展等等
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
[外链图片转存中…(img-05oTraJk-1715466373187)]