持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第30天,点击查看活动详情
1 引言
人名分类器的作用是给定一个人名作为输入,借助模型帮助使用者判断该人名最有可能来自哪一个国家。这在一些国家化公司的业务中具有十分重要的意义,因为国际化公司的客户可能是来自各个不同的国家,譬如在客户进行注册时,注册系统会根据客户填写的名字来分配可能的国家或地区选项,以及该国家或地区的国旗,限制手机号码位数等等。人名分类器的使用,给国际客户带来更好的体验,也减小了人工分类的难度。所以如何快速识别人名所属国家,成为了一项值得研究的课题。
深度学习作为人工智能的一个分支,在文本分类上已经有了广泛的应用。其中循环神经网络(RNN)在该类问题的解决上尤为突出。因为RNN结构能够很好利用序列之间的关系,因此针对自然界具有连续性的输入序列,如人类的语言,语音等进行很好的处理,广泛应用于NLP领域的各项任务,如文本分类、情感分析、意图识别和机器翻译等。本文使用传统RNN、LSTM和GRU三种循环神经网络进行人名分类器的实验对比。
2 模型与方法
RNN(Recurrent Neural Network),中文称作循环神经网络,它一般以序列数据为输入,通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。RNN的循环机制使模型隐层上一时间步产生的结果,能够作为当下时间步输入的一部分(当下时间步的输入除了正常的输入外还包括上一步的隐层输出)对当下时间步的输出产生影响。按照RNN的内部构造进行分类,可以分为传统RNN、LSTM和GRU等。
2.1 传统RNN模型
传统RNN的内部结构如图1所示:
图1 传统RNN内部结构图
如图1所示,在中间的方块部分,它的输入有两部分,分别是h(t-1)以及x(t),代表上一时间步的隐层输出,以及此时间步的输入,它们进入RNN结构体后,会"融合"到一起,这种融合根据结构解释可知,是将二者进行拼接,形成新的张量[x(t), h(t-1)],之后这个新的张量将通过一个全连接层(线性层),该层使用tanh作为激活函数,最终得到该时间步的输出h(t),它将作为下一个时间步的输入和x(t+1)一起进入结构体,以此类推。
传统RNN由于内部结构简单,对计算资源要求低,相比RNN变体LSTM和GRU模型参数总量少了很多,在短序列任务上性能和效果都表现优异。但传统RNN在解决长序列之间的关联时表现很差,原因是在进行反向传播的时候,过长的序列导致梯度的计算异常,发生梯度消失或爆炸。