社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【粉丝福利】赠《阿里云天池大赛赛题解析-深度学习篇》10 本

王的机器 • 4 年前 • 525 次点击  

人工智能在近几年多次的大型医疗健康事件中的作用突显,以阿里巴巴为例,在新冠肺炎疫情期间,阿里巴巴第一时间利用技术投入抗疫进程中,如大家熟知的“出行健康码”以及智能疫情外呼机器人。但在医疗行业中运用人工智能对算法的准确率和效率有着很高的要求,尤其是构建知识图谱中的实体识别是此类算法的一大重点。我们今天就从实体识别一起来走进一下深度学习。

学习前须知

阿里云天池针对三大经典赛题深度剖析


1、本文讲解部分参考自图书《阿里云天池大赛赛题解析——深度学习篇》中的第一个赛题:瑞金医院MMC人工智能辅助构建知识图谱。

2、本文相关数据和代码可以登录阿里云天池参与查看,点击阅读原文直接进入查看。

3、阿里云天池提供了免费的 jupyter notebook,DSW在线实验室,具体使用方法如下:点击这里查看DSW使用方法。

什么是实体识别?

实体识别任务要求识别出给定文本中具有特定意义的实体的边界及所属类别。实体识别任务中,我们提供一个句子或者一段话作为序列输入,模型输出的 是相应字或词的实体类别序列。

实体通常分为以下三类:

  • 实体类:包括人名、机构名、地名等。

  • 时间类:包括时间、日期等。

  • 数字类:包括货币、百分比等。

比如:小明早上8点去学校上课

这句话很短,我们可以人为将这句话拆分成:

但是怎么让计算机可以来正确识别每个词到底是什么类别的内容呢。

循环神经网络(RNN)

简单介绍一下循环神经网络(RNN),为了预测最后的结果,先用句子的第一个词进行预测,大家都知道只用第一个的预测结果肯定不精确,于是将把这个结果作为特征,跟第下一个词一起来预测结果……这样,如果输入有n个词,那么我们事实上对结果作了n次预测,给出了n个预测序列。整个过程中,模型共享一组参数。

长短期记忆网络(LSTM,Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的。

LSTM对RNN做了改进,使得能获取到距离更远的词之间的关系。但是不管是LSTM还是RNN,都有一个问题,它们都是从左向右进行的,因此后面的词会比前面的词更重要。因此出现了向循环神经网络(BiLSTM)

双向循环神经网络+条件随机场模型(BiLSTM+CRF)

双向循环神经网络(BiLSTM)双向顾名思义,就是它把原本单向的计算反向再进行一次,最后把两次结果组合起来以改变上述的权重不同的问题,如果用语文阅读的形式来讲,就是我们结合了上下文判断。

普通的BiLSTM模型

但是如果将我们上面的句子“小明早上8点去学校上课”放到模型中预测,预测序列则会出现-B-B-的形式。

出现连续两个B是不对的,因为直接使用 BiLSTM模型预测的前后两个标注是相互独立的,这显然不符合我们对于词句的分割。

于是我们使用条件随机场模型(CRF)替换原本的模型中的SoftMAX层,CRF在最后采用极大似然估计来计算负对数似然概率(-logP)。由于负对数似然概率与原来SoftMAX层交叉熵损失本质上是一样的,因此可以替代SoftMAX层的计算。

BiLSTM+CRF 模型

BiLSTM+CRF 模型既具有BiLSTM 模型自动构建输入数据特征与双向表达的优点,又具有CRF 模型能够充分学习到标注之间信息的优点,因此能够更好地完成序列标注任务。

采用BiLSTM+CRF 的方式构建模型

//构建文本输入x_in = Input((cfg['maxlen'],), name='word')//对输入的文本id 序列进行词嵌入计算x = Embedding(cfg['vocab'], cfg['word_dim'], trainable=True,name='emb')(x_in)//双层BiLSTM 结构,采用双向求和模式x = Bidirectional(LSTM(cfg['unit1'], return_sequences=True,name='LSTM1'), merge_mode='sum')(x)x = Bidirectional(LSTM(cfg['unit2'], return_sequences=True,name='LSTM2'), merge_mode='sum')(x)//导入CRF 层并计算输出crf = CRF(cfg['num_tags'], sparse_target=True,name='crf')output = crf(x)//构建Keras 模型model = Model(inputs=x_in, outputs=[output])

当然这只是一个最简单的模型,对于完成深度学习的比赛赛题还远远不够。

比如这次比赛中实体识别其实只是很小的一部分。并且为了提高预测精确度还用了很多方法来对上述模型进行优化,最终在训练效率与F1指标上都得到了大幅提升。多相关内容大家可以去阅读图书《阿里云天池大赛赛题解析——深度学习篇》,在赛事案例中学习到更多算法、模型训练的相关知识。


彩蛋

《阿里云天池大赛赛题解析——深度学习篇》目前已经开始发售啦!图书购买方法给大家整理好放在这里了!想要入门深度学习提高自己水平参与比赛的同学千万不要错过了!

大家可以直接扫描下方的二维码,就可以直达商城加入自己的购物车啦!千万不要错过噢!

扫描二维码去购买



赠书福利
你对深度学习感兴趣吗?
欢迎与我们分享
王的机器将选出十名优质留言
携手【阿里云天池】送出
《阿里云天池大赛赛题解析深度学习篇》一本

截止 2021 年 9 月 17 日晚上 21:00

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/120086