有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

人工智能64

1.对比学习一般泛式

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

其中x+是和x相似的正样本,x-是和x不相似的负样本
score是一个度量函数,来衡量样本间的相似度。
如果用向量内积来计算两个样本的相似度,则对比学习的损失函数可以表示成:
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

其中对应样本x有1个正样本和N-1个负样本。可以发现,这个形式类似于交叉熵损失函数,学习的目标就是让x的特征和正样本的特征更相似,同时和N-1个负样本的特征更不相似。

; 2.对比学习分类

「有监督对比学习」:通过将监督样本中的 相同label的样本作为正样本,不同label的样本作为负样本,来进行对比学习;
正样本:同类型数据
负样本:不同类型数据
「无监督对比学习」:由于没有监督信号(label),此时,我们对 同一个样本构造两个view,让同一样本构造的两个view互为正样本,而其他样本构造的view则全部为负样本,以此来进行对比学习。而由同一个样本构造两个view,又是数据扩增的过程,所以也可以称作是数据扩展对比学习。而不管那种范式,通常对比学习都是在batch内进行。
正样本:同一数据产生的增强数据
负样本:不同数据产生的增强数据

3.用于微调阶段的有监督的对比学习(SCL)

《Supervised Contrastive Learning for Pre-trained Language Model Fine-tuning》
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning在多分类任务(使用交叉熵损失)中:
①交叉熵损失导致泛化性能较差。
②对有噪声的标签或对抗样本缺乏鲁棒性。
使用了监督对比学习的思路,额外添加了一个loss,目的是使同一类样本尽可能离得近,不同类样本尽可能离得远。
使得模型对微调训练数据中的不同程度的噪声具有更强的鲁棒性,并且可以更好地推广到具有有限标签数据的相关任务。

对于具有C个类的多类分类问题,我们使用一批大小为N的训练示例
分子:每一对同类型样本;分母:与i、j不同类型的全部样本。
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

较低的温度增加了较难分离的例子的影响,有效地产生了较难分离的负样本。

; 实验-小样本

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

实验-噪声

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

; 实验-全量

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

消融实验

针对不同batchsize的训练速度-平均每秒更新(Avg Ups/sec)
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

; 实验-泛化性

将使用完整的SST-2训练集进行微调后的模型推广到相关任务(Amazon-2,Yelp-2)
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

4.负监督下的文本分类

Text Classification with Negative Supervision
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning
文本分类中的对抗样本问题:
当类别标注的标准与语义相似度不一致时,由于语义相似度的过度影响,分类容易出错。
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

提出了使用负样本提高文本分类模型的方法,这里的负样本类比对比学习的负样本

1.将分类任务作为主任务,另外加一个辨别性的学习任务作为辅助任务,主任务与辅助任务共享一个编码层;
2.主任务负责分类模型的训练,辅助任务在负样本的监督下,促使text encoder学习出更多相对label的差异性信息,使反例具有较小的余弦相似性。
每个batch中loss的计算:
有监督对比学习在分类任务中的应用 Supervised Contrastive Learning有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

; 实验-全量

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

· ACE (the auxiliary task with cross entropy loss) 证明提高效果的是负例而不是多任务学习。
· AAN(the auxiliary task using all negative examples)上文提到的方法
· AM (the auxiliary task with the margin-based loss) 第k个样本作为正例,类似于第一篇文章

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

Original: https://blog.csdn.net/weixin_43499457/article/details/124595010
Author: 持续战斗状态
Title: 有监督对比学习在分类任务中的应用 Supervised Contrastive Learning



相关阅读1

Title: 互动之音产品简介-基于语音控制与交互的场景化应用探索

目录

  1. 演示地址
  2. 产品简介
  3. 工作方式
  4. 场景分析
  5. 弊端与优势
  6. 场景拓展
  7. 结束语

演示地址

语音互动智慧城市,全程语音操作大屏产品演示_哔哩哔哩_bilibili

产品简介

系统核心是通过自然语言与机器互动,包括:下达指令/问题咨询等交互控制,通过输入文本或语音达到与系统交互,是传统鼠标键盘的有力辅助,能有效的解放双手。

本次演示结合智慧城市的一角,通过大屏的方式呈现,能让用户更加直观的了解产品,但对于交互并不限于大屏,后面场景分析中会详细说明。

工作方式

定制语音终端

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

系统原理图

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

  1. 语音识别,我们可以选择现有厂家服务,如:讯飞/百度等(在线离线均可)
  2. 语音识别是第一步,系统主要是对文本语义的处理与输出,通过互动与用户系统对接完成整个交互工作,如果存在硬件设备则可以通过IOT模块完成对接。

场景分析

由于目前语音输入的条件较为苛刻,因此会对产品的使用设置一些障碍,但我们通过在多个方面入手会逐步解决问题,并推动语音的使用。

  • 开发专有设备降低使用门槛,我们设想的是一款智能麦克风终端,它与常用麦克风不同,更象是一个小型电视遥控器,带有语音输入与简单的选择功能(上下左右/确认等),这样会更好提供用户使用便捷性。
  • 在没有设备的情况下,只能通过手机APP来做语音输入,同时能够输入文字指令。
  • 对于不需要语音输入的情况下,我们提供了pc客户端程序,用户可直接录入指令完成相同的工作。

目前演示仅仅使用了大屏互动展示产品功能,但系统本身并不会显示用户使用方式,即便是没有屏幕,在有些极端场景下,也能为用户提供便捷的使用体验,比如:在户外工作人员,可以通过简单的指令完成复杂的工作,而无需录入繁杂的业务参数,在场景拓展中我们详细探讨一些可用领域,以便给大家一些参考。

产品优势

  • *简化作业

把复杂繁琐的操作映射为可理解的语义,用户可通过常用词语实现对现有业务的管理,如:设备控制/物品检索/服务对话/学习引导等较多场合,而且可以通过二次开发根据用户流程,定义更复杂的流程对话,如:审批文件/接收邮件/处理紧急事件等,演示中第一个火灾预警示例就是自定义的一个事件流程。

  • *释放语音潜力

配合语音识别,能达到无需输入就能完成大部分工作,系统核心是指令语义分析与控制,也就是你直接输入一段话就能实现某个功能,但如果配合语音识别,那几乎可以解放双手了,演示中使用的讯飞语音识别,整个过程非常流畅,目前语音指令仅用在生活娱乐中,我们的产品定位是使用在工作作业中,能为未来的真正智能化探索一条道路。

  • *扩展性

产品扩展性极强,内部实现了对话引擎/事件管理/以及语义配置,并提供了基本的IOT模块与设备及平台对接,方便实现联动。同时提供互动接口,用于自定义与系统对话,方便用户灵活应用。配合大数据以及文本学习与识别,可以达到几乎99%的正确率(指令语句解析识别)

  • *应用形态

无论是大屏,还是智能机器人,抑或是用户仅有一部手机,都可以通过对话形式完成工作,这就涉及到对用户的业务对接,后续产品会考虑与网站/微信公众号/钉钉等现有的技术平台的自动化对接,已降低工作量。当然二次开发总是存在的,希望能找到更加合适的场景来应用并测试来不断完善产品。

场景拓展

  • *智慧城市

其实智慧城市目前阶段大多数以呈现为主,因为具体操作控制可能分布在其他底层的业务系统中,如果对于对接较为完善项目中,要操作一个目标需要大量的鼠标点击工作,菜单/键盘/点击/拖拽等。如果在这里引入我们的对话交互引擎,则配合语音的优势,可以让我们很轻松的一句话就能把隐藏在三级菜单中的一个功能立即执行,可能连参数都不需要输入,例如:立即关闭二楼所有门禁。

同时产品的设备连接特性可以天然的对大屏做控制,如:演示中播放宣传片等,配合后台上传视频,将大大降低大屏的使用门槛。

  • *数据大屏

数据大屏较为普及,而且应用场景很多,通过引入互动功能,我们可以很方便的查看报表。通过对话系统的引导提示,使没有经验的工作人员(甚至领导)都可以立即上手使用,如:查看2020年销售趋势,里面可能包含了其他条件选项,此时系统会自动提示输入的条件,如:请输入地区,通过提示步骤引导用户做出正确的设置。

  • *环境漫游

这在一些房地产项目中会使用,通常销售人员会拿着一个平板来控制大屏的视角或者进入房间,现在通过一句指令,如:漫游某街道,即可完成相同的操作,只需要在自己手机安装APP即可完成。

  • *公共自助终端

公用终端通常做的已经很友好了,但在某些需要用户认证/录入条件情况下,互动产品能给用户带来更好的体验,用户只需要扫描设备二维码,打开小程序便已连接设备,可以通过输入或语音(自己需要的内容),根据智能对话引导帮助用户完成操作。

可能这里大家会有疑虑:用户知道要输入什么吗?两种方式:

其一,我们在定义时就按照用户习惯设置指令词,同时配合文本理解模型识别用户需要;

其二,或者直接把操作指令做成按钮,让用户点击,后续则根据对话内容完成操作。

  • *个人工作终端

很多用户办公室都有大屏(或者显示器)...

  • *无显示交互(野外工作者)

某些野外工作环境较为苛刻,用户不太愿意总是用手录入内容,可以通过语音下达指令或者上报工作情况,如:"0302检测完毕",用户无需打开复杂的菜单查找功能,这其实在某些领域中很常见,有些APP功能界面按钮数据能有几十个,这能有效减轻用户操作负担。

  • *节目主持

在普通的节目表演中,我们也可以尝试通过手持定制麦克风,来完成解说与节目节奏控制,如:请听歌曲XXXX,此时虽然是解说,但通过指令大屏幕已经开始播放音乐了。不过这个仅是个人遐想勿喷。

Original: https://blog.csdn.net/pxzsky/article/details/121696482
Author: pxzsky
Title: 互动之音产品简介-基于语音控制与交互的场景化应用探索

相关阅读2

Title: STM32智能小车------超声波测距模块

文章目录

一、原理讲解

1.实物图

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning
这种呢是五线的,还有一种是四线的hysrf04,不过都是一样的,就多了一个OUT口(开关量输出)。
HY-SRF05超声波测距模块可测量距离为2cm-450cm,测量精度3mm,模块包括超声波发射器、接收器与控制电路。

; 2.工作原理:

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning

  1. 采用IO口TRIG触发测距,给至少10us的高电平信号;
  2. 模块自动发送8个40kHZ的方波,自动检测是否有信号返回;
  3. 有信号返回,通过IO口ECHO输出一个高电平,高电平的持续时间就是超声波从发射到返回的时间。测量距离=(高电平时间*声速)/2;
    计算距离:uS/58 = cm
    uS/148 = 英寸

3.接线:

有监督对比学习在分类任务中的应用 Supervised Contrastive Learning
VCC————5v
GND————板子GND
Trig————PA6(TIM3_CH1)
Echo————PA7(TIM3_CH2)
注意 :1.VCC一定要接5V,不然数据一直都是0.045
2.Trig和Echo可以接其他的定时器,不过初始化得自己改

; 二、软件驱动代码

1.接口定义

#define ECHO_Reci  PAin(7)
#define TRIG_Send  PAout(6)

#define HCSR04_PORT     GPIOA
#define HCSR04_CLK      RCC_APB2Periph_GPIOA
#define HCSR04_TRIG     GPIO_Pin_6
#define HCSR04_ECHO     GPIO_Pin_7

2.驱动函数


u16 msHcCount = 0;

void hcsr04_NVIC()
{
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}

void Hcsr04Init()
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(HCSR04_CLK, ENABLE);

    GPIO_InitStructure.GPIO_Pin =HCSR04_TRIG;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
    GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG);

    GPIO_InitStructure.GPIO_Pin =   HCSR04_ECHO;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(HCSR04_PORT, &GPIO_InitStructure);
    GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

    TIM_TimeBaseStructure.TIM_Period = (1000-1);
    TIM_TimeBaseStructure.TIM_Prescaler =(72-1);
    TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

    TIM_ClearFlag(TIM3, TIM_FLAG_Update);

    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);

    hcsr04_NVIC();

    TIM_Cmd(TIM3,DISABLE);
}

static void OpenTimerForHc()
{
   TIM_SetCounter(TIM3,0);
   msHcCount = 0;
   TIM_Cmd(TIM3, ENABLE);
}

static void CloseTimerForHc()
{
   TIM_Cmd(TIM3, DISABLE);
}

void TIM3_IRQHandler(void)
{

   if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
   {
       TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );
       msHcCount++;
   }
}

u32 GetEchoTimer(void)
{
   u32 t = 0;
   t = msHcCount*1000;
   t += TIM_GetCounter(TIM3);
   TIM3->CNT = 0;
   delay_ms(50);
   return t;
}

float Hcsr04GetLength(void )
{
   u32 t = 0;
   int i = 0;
   float lengthTemp = 0;
   float sum = 0;
   while(i!=5)
   {
      TRIG_Send = 1;
      delay_us(20);
      TRIG_Send = 0;
      while(ECHO_Reci == 0);
      OpenTimerForHc();
      i = i + 1;
      while(ECHO_Reci == 1);
      CloseTimerForHc();
      t = GetEchoTimer();
      lengthTemp = ((float)t/58.0);
      sum = lengthTemp + sum ;

    }
    lengthTemp = sum/5.0;
    return lengthTemp;
}

有了驱动代码,我们就可以直接调用 float Hcsr04GetLength(void )来获取超声波测距模块测量的距离了,然后调整电机的转动就可以实现控制距离了。

总结

最终效果

稍后奉上视频(狗头保命)

你见过会说话的小车吗

本文仅仅简单介绍了超声波测距的原理和驱动代码的编写,这样就完成了智能小车的控制距离功能,后面还会有手势识别传感器、红外遥控等等,去实现更多的功能,感谢阅读,如果觉得我的文章对你有帮助的话,就点个赞吧!爱了爱了

Original: https://blog.csdn.net/qq_52608074/article/details/121978042
Author: 小光学嵌入式
Title: STM32智能小车------超声波测距模块

相关阅读3

Title: 用例设计(记录东西,写给自己看的)

微信发送语音的测试用例设计:

功能测试
1、不说话的时候发送语音, 是否会有相关的信息提示。
2、说话分贝很轻很轻, 是否可以录入语言。
3、普通的语音信息是否可以正常发送。
4、语音录制的时候是否有时间限制(最短限制 / 最长限制)。
5、录制时间不足最短时长限制会发送失败。
6、超出了最长时间限制时, 语音自动保存并发送。
7、语音识别。
·是否可以录入中文, 英文, 日语...

· 是否可以录入小动物的声音: 狗叫, 猫叫, 羊叫...

· 是否可以录入其他声音: 汽笛, 施工声...

8、是否可以取消语音发送。
9、是否可以将语音转换成文字。
10、语音发送后。
· 对方是否可以立即收到
· 语音信息上是否会显示所发语音的时长, 以及语音标志
· 在多长时间内可以撤回
· 超出了撤回时长, 不可以再撤回
11、如果语音发送失败, 是否会有相应的提示。
12、如果语音未发出去, 是否会有相应的提示。
13、语音显示长度应该和说话时长成正比, 说话时长越长, 语音信息显示的长度越长。
14、如果一次发送了多条语音, 是否会因为网络不稳定原因而打乱顺序。
15、对方收到的语音和你发送的语音内容, 音量大小是否一致。
性能测试
1、语音录制结束到发送语音成功的响应时间是多少。
2、发送语音后, 对方是否可以立马收到语音消息提示。
3、不停地发送语音, 发送的时间是否会有迟缓。
4、将语音转换成文字全部显示出来的响应时间。
5、发送一条语音的耗电量。
6、打开语音发送界面对于手机或者电脑资源的占用情况。
界面测试
1、界面设计, 排版是否合理。
2、界面上是否有错别字。
3、语音图标是否正常显示。
4、语音图标的显示位置是否设计合理, 是否符合人的使用习惯。
5、语音图标是否可以正常点击。
6、语音按钮是上是否会有文字说明。
7、录制语音时, 声音采集器会随着分贝的大小而变化。
8、在点击取消发送按钮时, 按钮变成红色。
9、语音是否已读。
· 如果语音未读, 则会在语音前显示红点
· 如果语音已读, 则没有红点显示
10、语音消息上显示语音时长。
11、播放的时候, 语音图标会闪烁表示正在播放中。
12、如果语音未发送出去,语音信息前显示红色的感叹号。
兼容性测试
1、不同手机系统下是否可以发送语音:
· 安卓手机
· 苹果手机
2、不同手机型号和不同的微信版本是否都可以发送语音。
3、PC 端是否可以发语音:
· Windows 电脑
· MAC 电脑
4、手机端发送的语音, 电脑端是否可以同步接收, 反之电脑端发送的语音, 手机端是否可以同步接收。
安全测试和网络测试
1、如果发送的语音中有敏感信息, 语音是否可以成功发送。
2、如果撤回, 对方是否还可以看见被撤回的语音消息。
3、如果发语音时, 发生了中断, 有电话和短信接进来, 关机, 重启, 语音是否还可以正常发送。
4、弱网情况下(2G, 3G, wifi), 是否可以正常的发送语音。
5、不同网络运营商下是否可以正常发送。
· 中国移动
· 中国电信
· 中国联通
6、网络间发生切换, 语音是否可以正常发送。
· 网络从断开到连接
· 3G 切换到 4G / 5G /wifi
易用性测试
1、点击一条语音信息后, 是否可以自动播放所有未读取的语音信息。
2、是否可以根据手机和耳部的距离自动转换模式(扬声器模式 / 听筒模式)。

N95口罩测试思维

1、从功能方面来考虑:
可以防护某些颗粒物,如打磨、清扫和处理矿物、面粉及某些其它物料等过程产生的粉尘;
可以防护因喷洒而产生的液体的或非油性的颗粒物;
能有效过滤和净化所吸入的异常气味,当然有毒气体除外;
能够降低某些可吸入微生物颗粒物,如霉菌、炭疽杆菌、结核杆菌等的暴露水平;
可以防护病菌,过滤效率达到95%以上;
测试一些油性颗粒物,确定是否不能防护。
2、从界面方面来考虑:
看包装上是否有商品名,是否有制造商或者是供货商的信息,是否有口罩合格证或者使用说明;
如果是一次性口罩还要有一次性的标识,对于重复使用的医用防护口罩还要标明灭菌的方法;
用材料应没有异味,并对人体无害,特别是人体面部接触部分材料,应无刺激性和过敏性;
口罩的包装是否完整,有无破损,口罩表面不得有破洞、污渍;
医用防护口罩不应有呼气阀;
口罩的长、宽、厚度是否都符合对应的标准;
口罩是否配有鼻夹,鼻夹由可弯折的可塑性材料制成,并且长度符合要求。
3、从兼容性方面来考虑:
口罩可以适配各种脸型,各种脸型的密合性都可以保证;
能适合各种肤质的,接触都不会引起敏感等反应。
4、从性能方面来考虑;
挤压口罩,或者撕扯口罩是否会导致破损或者极易损坏;
带的时间过长,口罩防护作用是否降低;
口罩的鼻夹反复折合,是否容易会断。
5、从安全性方面来考虑:
口罩虽然越密闭,越安全;但是同时越密闭,呼吸起来越困难,尤其对于心血管疾病患者,是否会
因缺氧而导致头晕和呼吸困难等风险;
口罩的材质不会引起过敏反应 (此处跟易用性有重复哦,可以去重~);
口罩材质和味道都无毒,不会引起不良反应;
耳带式口罩长期佩戴是否会勒伤皮肤。
6、从易用性方面来考虑:
口罩的内外、上下面易于分辨,易于佩戴;
口罩的上缘鼻夹方便按压,易于于面部紧贴;
口罩易折叠,方便携带。

Original: https://blog.csdn.net/wjcczy/article/details/122827614
Author: 风尘浊酒
Title: 用例设计(记录东西,写给自己看的)