【阿里钉钉】
挂
1. 问简历。有一些没有说太明白
2. 基础知识很重要 可能是不想要我,问的是简历上没怎么写的
3. CNN的工作流程
https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner’s-Guide-To-Understanding-Convolutional-Neural-Networks-Part-2/
CNN - ReLU- 池化层 -dropout- 全连接层
4. 池化层的作用
- 当输入作出少量平移时,pooling能够帮助输入的表示近似不变 2. 保留主要特征同时减少参数和计算量,防止过拟合,提高模型泛华能力
5. C++ 的内存泄漏是怎么造成的
在使用new或malloc动态分配堆上的内存空间,而并未使用delete或free及时释放掉内存。
C语言中场景:1. malloc和free未成对出现
2. 通过局部分配的内存,未在调用者函数体内释放
3. 在局部分配的内存未释放
4. 由于程序运行时出现不可遇见的错误,导致内存泄漏。
C++ 语言中
- 不匹配使用new[] 和 delete[]
- delet void * 的指针,导致没有调用到对象的析构函数,析构的所有清理工作都没有去执行从而导致内存的泄露;
- 没有将基类的析构函数定义为虚函数,当基类的指针指向子类时,delete该对象时,不会调用子类的析构函数
6. 问会不会其他语言,最后做题要求最好c++(因为我说C++比java熟)
好 我现在要怒学java了 刷题用java
7. 【做的TOPK 的堆排序以及时间复杂度和空间复杂度】
参考中文帖 https://leetcode.com/problems/kth-largest-element-in-an-array/discuss/301338/Python-or-tm-215
求最大的TOPK
堆排序:建立初始堆 O(n)
堆调整 n-1个节点进行调整 (n-1)logn
总的时间复杂度 nlogn
空间复杂度 O()
最大堆: 平均时间复杂度 O(n+ klogn) (heapify O(N) pop K 个每个logn
空间复杂度O(n)
最小堆:Time: O(k) + O((n-k) * logk) | Space: O(K)
8.【数据结构 中的排序 哪些是不稳定的】
参考 https://www.cnblogs.com/onepixel/p/7674659.html
稳定: 冒泡 直接插入 基数 归并 桶排序 计数排序
不稳定:快排 堆排 希尔 选择
9. 【激活函数的应用场景】
激活函数根据神经元与模型的预测关系决定神经元是否被激活
同时也能将输出规范化到[-1, 1] 或者[0, 1]中
https://missinglink.ai/guides/neural-network-concepts/7-types-neural-network-activation-functions-right/
激活函数的角色:
是输入和输出之间的门
三种激活函数
- 阶跃函数 只能有一个输出, 不能进行多分类
2.线性激活函数 A = cx ,可以有多种输出
存在的两个问题: 1)导数是常数与输入无关,不能进行反向传播。
2)相当于把神经网络的所有层都压缩成一层,因为最后的输出还是输入的线性关系。相当于一个线性回归模型,很难解决具有多变参数的问题。
3.非线性激活函数
解决的问题:
1) 能够进行反向传播, 因为求导之后是跟输入相关的
2)允许模型多层堆叠形成深层神经网络,多层隐藏层能够提高模型的准确率
非线性激活函数的共同点以及如何选择非线性激活函数
- sigmoid函数(logic函数)
优点 :
1) 梯度平滑,输出不会有太大的跳跃
2)输出值在0 1 之间
3)更清晰的预测 比如当X高于2 或者小于-2 预测值Y 更贴近1 或者-1 能够更好的预测
缺点:
1) 梯度消失 当输入较大或者较小时容易发生梯度消失,导致网络不能继续训练或者训练的很慢不能有正确的预测
2) 输出不是0中心对称
3) 计算昂贵
- tanH 正切双曲线
优点: 0中心 使得具有很强正负值以及中庸值的数据更容易建模
具有sigmoid函数的优点(梯度平滑 输出在-1 +1 之间 clear predicton)
缺点: 梯度消失 类似于sigmoid函数
- ReLU函数 整流线性单元 max(0, x)
优点:
- 计算高效, 模型收敛更快
2)非线性,虽然看起来是线性函数,但是能够进行反向传播
缺点:
输入时非正时,梯度为0, 神经元不能被激活
-
Leaky ReLU 泄漏整流单元 max(0.1*x, x)
优点: 解决ReLU 神经元死亡问题
relu的优点(计算高效,收敛迅速 反向传播)
缺点:
对于负值预测不一致 -
Softmax
优点:
1)在输出神经元中,能够对多种类别进行分类
10 深度神经网络和神经网络对比
知乎问答 https://www.zhihu.com/question/26017374
(1)深度: 隐层神经元的个数
2) 新的网络结构 比如CNN提出了局部视野和权重共享减少模型参数 LSTM ResNet等
2)新方法:权重初始化方法(xavier,逐层初始化),损失函数, 防止过拟合方法(dropout ,BN等)
3) 新的激活函数 Relu
网络结构上:多层神经网络是 输入层- 隐藏层 -输出层,需要自己提取特征,采用反向算法求得最佳参数。限制:1.处理大量数据时需要自己提取数据中的特征 2.必须增加隐藏层的层数,才能实现更为近似的复杂的函数。3. 不能处理时间序列的问题。
多层神经网络伴随着‘万能逼近定理‘而生:单隐藏层(hidden layer)非线性前馈神经网络,可以在实数空间近似任何连续函数
深度神经网络能够自动提取数据中的特征,更接近大脑的处理模式;学习算法的改变,比如用CNN代替全连接,训练方法也有基于BP算法的,也有新的;有带有反馈和时间参数的RNN。
语言 C++ JAVA