一、模型的问题
1.1 SVM
1.1.1 原理 ♦
用最优分类面分割正负样本。
多分类时:1)一对多,取k个分类结果得分最高; 2)一对一,取k(k-1)/2;
1.1.2 损失函数 ♦
损失函数的特点,详情见 我的blog文章。
1.2 LSTM
1.2.1 损失函数
1.2.2 门限及公式 ♦
LSTM 的关键就是细胞状态,水平线在图上方贯穿运行。
典型的LSTM包含:遗忘门、输入门、输出门。
- 遗忘门
遗忘门负责输出一个介于0到1之间的 f t f_t ft ,相当于一个系数,乘以 C t − 1 C_{t-1} Ct−1 代表遗忘细胞中一定程度的信息。
- 输入门
输入门负责向细胞内输入信息,输入的信息为 i t C ~ t i_t \tilde{C}_t itC~t 。
遗忘门和输入门一同完成了细胞信息的更新工作: C t = f t C t − 1 + i t C ~ t C_t=f_t C_{t-1} + i_t \tilde{C}_t Ct=ftCt−1+itC~t 。
- 输出门
1.2.3 具体模型案例 ♣
- 深度文本匹配模型
描述结构(包括维度)。详情见 我的blog文章。
- 文本分类模型、关系抽取模型
讲清楚背景、方法流程、最后的模型结构(包括维度)。
1.2.4 实际问题解决 ♣
问:在没有其他大量语料的情况下,如何在一堆问题里面找出100个常用问题?
答:
1、sentense embedding(多关注语义层面,这样不仅关注字符串层面)
2、迁移学习(但本质也是一种embedding)
最后再聚类。
1.3 神经网络
1.3.1 BatchNormalization的原理与意义
意义:为什么要使用BatchNorm,因为效果好。经过这么简单的变换,不仅仅极大提升了训练速度,收敛过程大大加快,还提升效果。
详情见 我的blog文章。
1.3.2 Attention原理
Attention原理
Attention代码实现运算(需要用numpy能手撕一个attention出来)
Self-Attention本身就可以保留句子中单词的位置信息?
1.3.3 Transformer原理
1.3.4 Bert原理
1.4 W2V
1.3.1 大致原理 ♦
描述清楚
1.3.2 实现细节
1.5 XGBoost
1.4.1 大致原理 ♦
xgboost入门与实战(原理篇)
xgboost的原理没你想像的那么难
1.4.2 和GBDT的关系 ♦
XGboost是一个工具,里面有多种模型,GBDT只是其中一个。
1.4.3 Xgboost如何并行
xgboost工具支持并行。boosting不是一种串行的结构吗?怎么并行的?注意xgboost的并行不是tree粒度的并行,xgboost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。xgboost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
详情见参考blog。
二、优化的问题
2.1 softmax ♦
2.1.1 softmax和logistic区别
softmax和logistic区别,如何互相推导。
softmax的代价函数是
其中,
logistic的代价函数是
因此,softmax是logistic的推广。
Softmax回归与Logistic 回归的关系
当类别数
K
=
2
K=2
K=2 时,softmax 回归退化为 logistic 回归。这表明 softmax 回归是 logistic 回归的一般形式。具体地说,当
K
=
2
K=2
K=2 时,softmax 回归的假设函数为:
利用softmax回归参数冗余的特点,我们令
ψ
=
θ
1
\psi=\theta_1
ψ=θ1 ,并且从两个参数向量中都减去向量
θ
1
\theta_1
θ1 ,得到:
因此,用
θ
′
\theta'
θ′ 来表示
θ
2
−
θ
1
\theta_2-\theta_1
θ2−θ1 ,我们就会发现 softmax 回归器预测其中一个类别的概率为
1
1
+
e
x
p
(
θ
′
T
x
(
i
)
)
\frac{1}{1+exp(\theta'^T x(i))}
1+exp(θ′Tx(i))1,这与 logistic回归是一致的。
**[注]**那当我们遇到Softmax 回归 vs. k 个二元分类器时该如何做选择呢?
一般来讲,当几个类别是互斥的时候我们选择前者比较合适,当几个类别可以多选共存时应该选择后者。
2.1.2 Softmax和sigmoid的损失函数
softmax配合category crossentropy loss 使用,sigmoid配合binary cross entropy loss使用。
熵
=
y
∑
p
熵=y \sum p
熵=y∑p
category crossentropy loss是只有y=1 的那一项熵;
binary cross entropy loss是每一项熵都有,如果y=0就会把p就变成1-p;
详细展开参考【4】【5】。
2.2 过拟合 ♦
常用应对过拟合的方法有:
- Early stopping
- 调节步长
- 正则化(参数太多、模型复杂度高)
- 数据集扩张,欠采样和多数据源采样
- DropOut
- 10轮CV
- 多模型融合
- 权值衰减
2.3 正则化项 ♦
2.3.1 L1范数和L2范数的特点
L1正则更加容易产生稀疏解、L2正则倾向于让参数w趋向于0。(都是让模型更加简单)
2.3.2 如何改变正则化项的权重
利用惩罚系数加入loss function中。
2.4 机器学习项目/比赛的步骤
2.4.1 预处理
2.4.2 特征工程
突出亮点特征
2.4.3 模型搭建、调参
2.4.4 模型融合
2.5 调参过程 ♥
2.6 模型融合 ♦
三、评价方式
3.1 Pre&Recall ♦
以及F值
3.2 ROC&AUC ♦
ROC的意义:
横坐标是“假阳性比例”,纵坐标是“真阳性比例”(也可以是“假阴性”),描述了对正样本正确分类和错误分类的关系。(雷达兵的误报和漏报关系)
ROC曲线越靠近左上角,试验的准确性就越高。最靠近左上角的ROC曲线的点是错误最少的最好阈值,其假阳性和假阴性的总数最少。
AUC指的就是ROC曲线下的面积大小占总面积的比例。
3.3 假阴性和假阳性权重不同 ♦
当真阳性和假阳性权重相同时,ROC曲线上最好的点就是45°切线,即 y = x + b y=x+b y=x+b。
当真阳性和假阳性权重不同时,则需要根据不同的权重设计一个 y = k x + b y=kx+b y=kx+b 的斜线,改变 b b b 的过程中和ROC曲线相切的点所对应的阈值就是最佳阈值。
四、开发优化问题
4.1 Mapreduce
- combiner
combiner作为mapper和reducer之间的衔接,适用于具有结合律性质的情况。大大降低reducer的压力。
- 二次排序
4.2 Mysql
4.2.1 具体问题
统计下表中各商品的数量:
客户序号 | 购物内容 |
---|---|
1001 | 电脑,手机,手表 |
1002 | 手机,手表 |
1003 | 手表,马桶 |
详情见blog。
4.3 Python机制
4.3.1 循环
循环是强制赋值的
for i in range(5):
print(i)
i=10
4.3.2 try
try和finally的用法
def fun()
try:
return 1
finally:
return 0
4.4 数据结构算法
4.4.1 前k个高频元素
1、hashmap
2、堆
4.4.2 最大回文数
1、遍历(轻微优化)
2、动态规划
五、引用
[1] softmax与logistic关系
[2] python中try和finally的应用
[3] RNN梯度消失和爆炸的原因
[4]解析损失函数之categorical_crossentropy loss与 Hinge loss
[5]深度学习-Loss函数