最近想学习一下LightGBM,一直对决策树不是很熟悉,所以学习一下~
本文主要参考了阿泽作者的笔记,对于不理解的地方,我会添加个人注释。
决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。
预备知识
这部分内容主要参考了决策树算法-理论篇-如何计算信息纯度 。
最近想学习一下LightGBM,一直对决策树不是很熟悉,所以学习一下~
本文主要参考了阿泽作者的笔记,对于不理解的地方,我会添加个人注释。
决策树是一个非常常见并且优秀的机器学习算法,它易于理解、可解释性强,其可作为分类算法,也可用于回归模型。
这部分内容主要参考了决策树算法-理论篇-如何计算信息纯度 。
正则表达式很常用,但是规则也很复杂,每次用的时候查资料即可。我这里只是总结一下常用的正则表达式。
我们常常需要根据正则表达式,来对字符串进行过滤。例如仅保留汉字、数字、字母等。用法如下例所示:
1 | # coding = utf-8 |
输出结果如下所示:
事先声明,此文章大部分内容来源于Linux shell 命令中nohup 、&、重定向的使用。不理解的地方我会添加个人见解。
nohup
是 no hung up 的缩写,意思是不挂断 。使用 Xshell 等 Linux 客户端工具,远程执行 Linux 脚本时,有时候会由于网络问题,导致客户端失去连接,终端断开,脚本运行一半就意外结束了。这种时候,就可以用
nohup
指令来运行指令,即使客户端与服务端断开,服务端的脚本仍可继续运行。
nohup
语法格式:
注意以下内容,主要参考了linux的top命令参数详解。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。 比较准确的说,top命令提供了实时的对系统处理器的状态监视。它将显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用。内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
本文主要来源于Expressive TTS(01)。
Expressive TTS是目前语音合成领域中比较活跃的方向,它和单纯TTS的区别是,它更关注合成声音的风格(例如新闻播报,讲故事,解说)、情感(例如生气,兴奋,悲伤)、韵律(例如重读,强调、语调)等等。自从深度学习技术大放异彩后,语音合成模型在合成声音的自然度方面有了极大的提高(例如Tacotron,Tacotron2,WaveNet),跳词复读的问题也在最近得到了解决(例如DurIAN,FastSpeech),而深度学习不仅可以让语音的自然度得到大幅度的提升,对一些难以显式建模的特征上也有很强大的学习能力,因此,让语音合成能更加具有expressive成为了一个研究热点。
https://arxiv.org/abs/1711.00520
这一篇是 google 的王宇轩大佬早在 2017 年上传到 arxiv 上的一篇文章,也是表现力语音合成领域可追溯到的比较早的一篇文章。
开新坑了,最近在攻击语音合成系统,现在学习一下语音基础知识。
一般只有元音(一些介于元音辅音中间分类不明的音暂不讨论)才会有共振峰,而元音的音质由声道的形状决定,而声道的形状又通过发音的动作来塑造(articulatory+movements)。
最近终于搞懂了transformer和原理和实现,可以看bert了。事先声明,本文的大部分内容来自BERT模型详解。大佬写的太好了,本来不想复制粘贴的,但是有部分内容看不明白,必须加点笔记。
2018年深度学习在NLP领域取得了比较大的突破,最大的新闻当属Google的BERT模型横扫各大比赛的排行榜。作者认为,深度学习在NLP领域比较重点的三大突破为:Word Embedding、RNN/LSTM/GRU+Seq2Seq+Attention+Self-Attention机制和Contextual Word Embedding(Universal Sentence Embedding)。
Word Embedding解决了传统机器学习方法的特征稀疏问题,它通过把一个词映射到一个低维稠密的语义空间,从而使得相似的词可以共享上下文信息,从而提升泛化能力。而且通过无监督的训练可以获得高质量的词向量(比如Word2vec和Glove等方法),从而把这些语义知识迁移到数据较少的具体任务上。但是Word Embedding学到的是一个词的所有语义,比如bank可以是”银行”也可以是”水边。如果一定要用一个固定的向量来编码其语义,那么我们只能把这两个词的语义都编码进去,但是实际一个句子中只有一个语义是合理的,这显然是有问题的。
这时我们可以通过RNN/LSTM/GRU来编码上下文的语义,这样它能学到如果周围是money,那么bank更可能是”银行”的语义。最原始的RNN由于梯度消失和梯度爆炸等问题很难训练,后来引入了LSTM和GRU等模型来解决这个问题。最早的RNN只能用于分类、回归和序列标注等任务,通过引入两个RNN构成的Seq2Seq模型可以解决序列的变换问题。比如机器翻译、摘要、问答和对话系统都可以使用这个模型。尤其机器翻译这个任务的训练数据比较大,使用深度学习的方法的效果已经超过传统的机器学习方法,而且模型结构更加简单。到了2017年,Google提出了Transformer模型,引入了Self-Attention。Self-Attention的初衷是为了用Attention替代LSTM,从而可以更好的并行(因为LSTM的时序依赖特效很难并行),从而可以处理更大规模的语料。Transformer出来之后被广泛的用于以前被RNN/LSTM/GRU霸占的地盘,Google更是在Transformer的论文里使用”Attention is all you need”这样霸气的标题。现在Transformer已经成为Encoder/Decoder的霸主。
前面我们详细的介绍了Transformer的原理,但是有的细节还是一头雾水,所以我们接下来介绍一下Transformer的实现,主要参考了文章The Annotated Transformer,github地址。
本文的代码部分来自于github,而图来源于The Annotated Transformer。
1 | import os |
1 | # Some convenience helper functions used throughout the notebook |