likes
comments
collection
share

大都督的技术周报第一期

作者站长头像
站长
· 阅读数 7

内容有:机器学习周报、Java架构周报、技术感悟、其他方面 我的公众号:IT周瑜

机器学习周报

最近一直在公司做机器学习相关,这周主要做的是数据增强和数据采样,先大概介绍一下背景,公司希望能利用机器学习技术自动识别发票的类型,比如住宿、交通、餐饮等类型。

机器学习中主要有两类任务:

  1. 分类任务:预测一句话是好评还是差评就是分类任务
  2. 回归任务:预测一句话的下一个字就是回归任务

很明显,我要做的发票自动识别就是分类任务

我选择的技术为pytorch框架和bert模型,基于bert模型的原因是,希望借助bert的语义理解能力更快更准的对发票进行识别,现在看来效果确实不错。

原本我选择是阿里的modelscope框架,它是基于pytorch框架更上层的框架,使用门槛更低,但是由于自己积累的不够,又考虑以后业务的变动我还是改成了资料更多、更成熟的pytorch框架。

介绍一下机器学习的工作流程:

  1. 导出数据:从数据库导出csv
  2. 标注数据:人工打标
  3. 切分数据:70%训练集、15%评估集、15%测试集
  4. 开始训练
  5. 记录checkpoint:不断记录评估效果最好的模型参数
  6. 保存模型

考虑某些发票类型数据量较小,导致模型训练时被忽略,所以需要对样本量较小的类型做数据增强,我的做法是将发票上的各个部分随机打乱,形成新的发票信息,比如发票上有ABC三个部分,那么这张发票可以生成额外的ABC、ACB、BAC、BCA、CAB、CBA六张发票,这就是数据增强。

考虑某些类型的发票数据过多,所以也实现了一套抽样逻辑,对某个样本量过多的类型进行抽样,使得能有一个手段平衡模型的训练效果和速度。

下周计划:

  1. 研究增量数据增量学习
  2. 研究模型量化,较小模型体积
  3. 研究推理加速,提升模型预测速度

Java架构周报

ESCAPE关键字

在用like查询时,如果需要模糊查询包含“5%”的数据,SQL该如何写,这么写可以吗:

select * from order_info where company_name like '%5%%';

不太行,这个SQL在Mysql中并不会报错,但是查询结果如下:

中国5%腾讯技术有限公司
中国5百度技术有限公司

模糊匹配的是'5',而我想要的是'5%',这就需要对'%'进行转义,Mysql中转义符为'',所以SQL改写为以下就正确了:

select * from order_info where company_name like '%5\%%';

不过还可以通过ESCAPE关键字来制定转义符,比如:

select * from order_info where company_name like '%5*%%' ESCAPE '*';

这个SQL中,'*'号就是转义符。

PostgreSQL相关

PG数据库对于字段类型的校验更加严格,比如一个字段是数字类型,底层JDBC在如果是setString,就算传入的值为null,PG也会报错,而Mysql不会报错,错误大致意思为"字段类型为数字,但是传入的是字符串类型"。

技术感悟

目前来说,做机器学习其实越来越容易了,学习资料、框架、开源模型都一大堆,作为技术人,不要只局限在Java,应该多学习一些在未来更有优势的技术。

生活感悟

前几天看了雷军的小米汽车发布会,我关心的不是车子怎么样,我也不懂车子,我看到的是雷军的真诚,为什么雷军作为一个程序员,一个做技术的,却被称为营销大师,因为他的营销风格是真诚,现在这个环境,虚头巴脑的营销越来越没用了,只有真正好的产品,真心诚意做出来的产品,真心诚意的营销才能打动用户。

其他方面

其实我最近一直在准备一个课程,内容暂不透露,核心内容已经准备完了,接下来好好优化一下细节,打磨好课程,争取把知识点涉及到的方方面面都在课程中讲到,这样既能让大家学到更多,也能学得更轻松,同时也能节省自己答疑的精力,烂课程就是割韭菜,好课程才是产品。