2018-11-07 18:51:41 hzwaxx 阅读数 1511
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39692 人正在学习 去看看 唐宇迪

语义匹配技术,在信息检索、搜索引擎中有着重要的地位,在结果召回、精准排序等环节发挥着重要作用。

传统意义上讲的语义匹配技术,更加注重文字层面的语义吻合程度,我们暂且称之为语言层的语义匹配;而在美团这样典型的O2O应用场景下,我们的结果呈现除了和用户表达的语言层语义强相关之外,还和用户意图、用户状态强相关。

用户意图即用户是来干什么的?比如用户在百度上搜索“关内关外”,他的意图可能是想知道关内和关外代表的地理区域范围,“关内”和“关外”被作为两个词进行检索,而在美团上搜索“关内关外”,用户想找的就是“关内关外”这家饭店,“关内关外”被作为一个词来对待。

再说用户状态,一个在北京和另一个在武汉的用户,在百度或淘宝上搜索任何一个词条,可能得到的结果不会差太多;但是在美团这样与地理位置强相关的场景下就会完全不一样。比如我在武汉搜“黄鹤楼”,用户找的可能是景点门票,而在北京搜索“黄鹤楼”,用户找的很可能是一家饭店。

如何结合语言层信息和用户意图、状态来做语义匹配呢?

我们的思路是在短文本外引入部分O2O业务场景特征,融合到所设计的深度学习语义匹配框架中,通过点击/下单数据来指引语义匹配模型的优化方向,最终把训练出的点击相关性模型应用到搜索相关业务中。下图是针对美团场景设计的点击相似度框架ClickNet,是比较轻量级的模型,兼顾了效果和性能两方面,能很好地推广到线上应用。

                                          图1 clicknet框架

表示层

对Query和商家名分别用语义和业务特征表示,其中语义特征是核心,通过DNN/CNN/RNN/LSTM/GRU方法得到短文本的整体向量表示,另外会引入业务相关特征,比如用户或商家的相关信息,比如用户和商家距离、商家评价等,最终结合起来往上传。

学习层

通过多层全连接和非线性变化后,预测匹配得分,根据得分和Label来调整网络以学习出Query和商家名的点击匹配关系。

在该算法框架上要训练效果很好的语义模型,还需要根据场景做模型调优:首先,我们从训练语料做很多优化,比如考虑样本不均衡、样本重要度、位置Bias等方面问题。其次,在模型参数调优时,考虑不同的优化算法、网络大小层次、超参数的调整等问题。经过模型训练优化,我们的语义匹配模型已经在美团平台搜索、广告、酒店、旅游等召回和排序系统中上线,有效提升了访购率/收入/点击率等指标。

小结

深度学习应用在语义匹配上,需要针对业务场景设计合适的算法框架,此外,深度学习算法虽然减少了特征工程工作,但模型调优上难度会增加,因此可以从框架设计、业务语料处理、模型参数调优三方面综合起来考虑,实现一个效果和性能兼优的模型。

2019-07-14 11:21:34 weixin_41353960 阅读数 246
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39692 人正在学习 去看看 唐宇迪

使用深度学习进行点云匹配(一)

https://blog.csdn.net/xckkcxxck/article/details/84671024

2019-11-24 10:34:57 weixin_43090400 阅读数 29
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39692 人正在学习 去看看 唐宇迪

Learning Local Image Descriptors with Deep Siamese and Triplet Convolutional Networks by Minimising Global Loss Functions(2016CVPR)

当前状况是:

  1. 使用 Triplet 网络比 Siamese 有更好的分类效果,但在局部图像描述子方面未被证实,论文提出采用 Triplet 网络进行局部图像描述。
  2. Siamese 和 Triplet 容易陷入过拟合,论文提出了一种全局损失函数,提高泛化能力。
  3. 论文验证了triplet网络比siamese网络产生更加精确的embedding,同时证明了triplet + global loss = best embedding.

Local image descriptor 重点是优化过程,最小化相似3-D location 表达之间的差异distance,最大化不同3-D location 表达之间的差异。
全局损失函数:最小化属于同一类和属于不同类的特征的距离的方差,并最小化属于同一类的特征的距离的均值,最大化不同类图像块特征的均值。

在这里插入图片描述
Metric Learning
见《机器学习》3.4,线性判别分析(LDA)
K近邻的优化,相当于Softmax损失最小化。奇异值分解,线性变换(降维映射)。
将线性变换延伸至非线性,这时就可以使用Siamese网络学习,甚至triplet网络。

siamese和triplet网络含有大量参数,需要采样大量样本来训练。然而采样所有的图像对不可能的,并且其中绝大多数都是简单样本!所以可选的方案是采样策略。必须足够小心,因为在困难样本上关注太多又会导致过拟合,所以这其实很棘手。为此作者提出了这个全局损失函数。这个函数主要为了避免欠采样(太多简单样本)或者过采样(太多困难样本)问题。

  • TNet,TLoss:triplet net+triplet loss、输出feature embedding
  • TNet,TGLoss:triplet net+triplet loss&global loss、输出feature embedding
  • SNet,GLoss:siamese net+global loss、输出pairwise similarity estimator
  • CS SNet,GLoss:central-surrond siamese net+global loss、输出pairwise similarity estimator

输出pairwise similarity的siamese结构要优于输出feature embedding的triplet网络,但siamese成对的输入在测试时比较复杂。siamese测试一对图像需要经过全连接得到一个0-1之间的概率值,而对于特征向量来说可以直接利用余弦内积得到相似度,因为这些向量都被l2 -norm为1了,所以得到的也是0-1之间的概率。但是有的方法中triplet更优于siamese,跟网络结构、损失函数、优化策略等等都有关系。

详见:SNet解读

Magazine [31] 局部Fisher判别分析用于降维
Book [20] 描述子学习 for 全方位图像匹配 (嵌入空间的Pairwise结构)
2005CVPR [5] 局部判别嵌入及其变体(LDE算法,用于实现高维数据的特征提取与低维嵌入,可以很好地实现数据的降维)
2015IEEE [32] 增强型二进制描述子(BinBoost,boosted binary hash function)
2014IEEE [28] 用凸优化学习局部特征
Magazine [3] Discriminative learning of local image descriptors
Book [10] 用 Deep ConvNets 判别式无监督学习 (多分类 损失最小化)
Book [18] 用 Deep ConvNets 进行图像分类
2010CVPR [4] 用非线性特征提取算子来自动设计局部特征描述的特征空间。
2015CVPR [12] unifying feature and metric learning for patch matching(Siamese Network)
2014CVPR [33] Learning Fine-grained Image Similarity with Deep Ranking(triplet Network)
2015CVPR [35] 用于目标识别和3D姿态估计的特征描述(triplet 建立描述子估计姿态)
2015CVPR [36] Learning to compare image patches via convolutional neutral network(Siamese Network)

2019-03-13 17:19:50 pengmingpengming 阅读数 1795
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39692 人正在学习 去看看 唐宇迪

本项目介绍了语义匹配的几个模型,分别为:

DSSM

Learning Deep Structured Semantic Models for Web Search using Clickthrough Data

ESIM

Enhanced LSTM for Natural Language Inference

Pair-CNN

Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks

ABCNN

ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs

BIMPM

bilateral multi-perspective matching for natural language sentences

顺带介绍料WMD的相关知识

论文集在papers文件夹中  

github:https://github.com/pengming617/text_matching

纯属个人学习  如有侵权 实在抱歉  请联系我

 

                            

             

       

       

         

        

       

            

               

             

                

                 

                  

              

                 

                 

              

                

               

              

                

          上文中介绍的Bimpm代码复制于  https://zhuanlan.zhihu.com/p/50184415,特此感谢 简枫 同学

2019-03-14 18:33:25 qq_40180411 阅读数 91
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39692 人正在学习 去看看 唐宇迪

爱奇艺 2018 秋招 Java: 一个合法的括号匹配序列有以下定义:

  1. 空串""是一个合法的括号匹配序列
  2. 如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序列
  3. 如果"X"是一个合法的括号匹配序列,那么"(X)"也是一个合法的括号匹配序列
  4. 每个合法的括号序列都可以由以上规则生成。

例如: "","()","()()","((()))"都是合法的括号序列 对于一个合法的括号序列我们又有以下定义它的深度:

  1. 空串""的深度是0
  2. 如果字符串"X"的深度是x,字符串"Y"的深度是y,那么字符串"XY"的深度为max(x,y)
  3. 如果"X"的深度是x,那么字符串"(X)"的深度是x+1

例如: "()()()"的深度是1,"((()))"的深度是3。牛牛现在给你一个合法的括号序列,需要你计算出其深度。

输入描述:
输入包括一个合法的括号序列s,s长度length(2 ≤ length ≤ 50),序列中只包含'('和')'。

输出描述:
输出一个正整数,即这个序列的深度。

示例:

输入:
(())
输出:
2

思路草图:

代码如下:

import java.util.Scanner;

/**
 * https://www.nowcoder.com/test/8246651/summary
 * 
 * @author Snailclimb
 * @date 2018年9月6日
 * @Description: TODO 求给定合法括号序列的深度
 */
public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    int cnt = 0, max = 0, i;
    for (i = 0; i < s.length(); ++i) {
      if (s.charAt(i) == '(')
        cnt++;
      else
        cnt--;
      max = Math.max(max, cnt);
    }
    sc.close();
    System.out.println(max);
  }
}
没有更多推荐了,返回首页