BLCL的博客小馆

标签 · 算法

首页

关于

归档

loading..
算法

多模态-ViLT

最近面试了一北京候选者,之前使用电子病例以及CT图像两种模态信息,训练ViLT多模态预测模型,提高肺结节良恶性预测准确率。正好我对多模态如何对齐也比较感兴趣,以Transformers-Tutorials提供的代码为例,来看下其内部是如何实现的。数据集我没有从VQA下载,太大了,这里也强烈安利huggingface提供的lmms-lab/VQAv2 dataset。 剩下就改下VQADataset部分,其他保持不变。 这里记录比较有趣的几个点。 1. text和image如何对齐?答案:在第二维对齐。 具体来说,text部分使用的是BertTokenizer,max_position为40(所以如果有长文本,这里就坑了),假设batch_size为4,text embedding出来后就是(4, 40, ..

更多
算法

SHAP机器学习模型解释

介绍分享个模型可解释的库SHAP,其可以对XGBoost等机器学习库进行结果解释。 更多还有类似Paddle中的TrustAI。 什么是SHAP?SHAP(SHapley Additive exPlanations)是用来解释机器学习模型的工具。它告诉我们每个特征对模型预测结果的贡献有多大。想象一下你和几个朋友一起干活,最后得到了一笔报酬。你想知道每个人应该分多少钱,SHAP就是在做类似的事情,只不过它是在告诉你每个特征对模型预测结果的贡献。 核心概念1. Shapley值: 想象一个团队在完成任务后得到一笔奖金,我们想公平地分配这笔奖金。Shapley值就是一种分配方法,告诉我们每个成员(在机器学习中是每个特征)应得的报酬(对预测结果的贡献)。 2. 边际贡献: 假设我们在玩一个游戏,每次加入一..

更多
算法

DPO

简介DPO全称Direct Preference Optimization,它是RLHF算法的一种,相比PPO算法来讲,它只需要actor和ref model,少了critic和reward model。其核心期望为good loss - bad loss越来越大, 这点和排序模型中的rank loss很相似,但是又不希望和ref model偏差太多。 最小实现代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859from copy import deepcopyimport torchimport torch.nn.functional ..

更多
loading..
算法

RLHF-Actor-Critic

简介值函数希望学习一个价值函数,这个值可以用于评估当前决策的分值。策略函数希望学习一个策略函数,拿到其动作的概率分布。 Actor-Critic是在策略函数的基础上,额外引入学习价值函数,来帮助策略函数更好地学习。 下面这个图很好表示了两者关系。 重点看actor-critic算法中update函数log_probs部分。actor采用策略,critic来进行评价。

更多
算法

lstm使用示例

注意,本文代码来自于plm-nlp-code。 学习任何模型都需要一个简单可行的例子进行说明,我会基于plm-nlp-code的代码进行说明lstm在序列标注和句子极性二分类两个例子的应用。 序列标注参考文件lstm_postag.py. 1. 加载数据12#加载数据train_data, test_data, vocab, pos_vocab = load_treebank() 其中load_treebank代码: 12345678910111213141516171819def load_treebank(): # 需要翻墙下载,可以自行设置代码 nltk.set_proxy('http://192.168.0.28:1080') # 如果没有的话那么则会下载,否则忽略 nl..

更多
loading..
算法

动态词向量之elmo

介绍elmo是用于解决静态词向量无法一词多义的模型。 在介绍如何实现elmo模型的时候,此处穿插进来Conv1d layer(一维卷积层)。 本文代码以plm-nlp-code chp6为准,可直接参考。 Conv1d介绍卷积有Conv1d(序列),Conv2d(图像),Conv3d(立体数据),主要区别在于不同方向上进行卷积。因为文字是一维结构的,从而在nlp领域使用Conv1d。 一维卷积适合在句子对于时序结构上体现不重要的方面有更加的优势。比如一句话中关键词位置的变动不影响句子的语义。但是对时序结构通常效果并不好,因为时间序列通常不满足平移不变的假设。 此处不过多介绍关于Conv1d的原理,感兴趣可看一维卷积tensorflow2版本的Conv1D以及Pytroch的nn.Conv1d用法。 此处只..

更多
算法

LLM-RLHF工作原理一

前言大模型最近很是火啊,媒体铺天盖地的宣传,候选者简历中写LLM微调等等。本文希望以huggingface trl/RLHF notebooks讲到的几个例子作为入口,介绍下RLHF在整个训练工作中的位置以及起到的作用,方便理解与后续应用。 代码分析在huggingface trl/RLHF notebooks这个文件夹下,一共有三个例子: gpt2-sentiment.ipynb gpt2-sentiment-control.ipynb best_of_n.ipynb 同时也按照上述这三个文件顺序进行分析。 一、gpt2-sentiment.ipynb 目的:这个文件实现的是如何利用RLHF学会生成正向评论。 1. Load IMDB dataset数据集默认有两个字段,text 和labe..

更多
算法

RLHF-DQN

前言下面记录下DQN算法以及一些细节,注意哦,本博客更多目的在于当下记录,并非完整严谨的哦,也或许有理解错误。 关于DQN,看了下网上的介绍以及从Q-Learning到DQN解决state和action无法枚举完的情况。另外也强烈推荐下面链接: 知乎网友实现DQN:可直接按照这个跑通体验下效果。 PaddlePaddle/PARL:这个是paddle出的RLHF库,并提供了相应的examples帮助入门和深入,并且环境也帮忙解决好了,如果debug能力比较强的话,建议直接看这个哦。 PyTorch DQN实现:这个是pytorch官方实现的DQN算法。 一些特别的点1. 俺是value based的,所以不需要softmax看下面这个DQN网络,你觉得有问题么? 12345678910111213cl..

更多
算法

RLHF-policy_gradient

前言这个是RLHF系列中的策略梯度部分,在看了Hands-on-RL和parl两者实现后,感觉整体难度并不是很高,但是当自己从零实现时还是会莫名其妙多一些问题,相比深度学习来讲,还是有蛮多小细节是需要额外注意的。 注意点1. log平滑这里是指learn阶段中的获取最大期望阶段,如下代码所示: 12output = self.model(obs_bs)output = torch.log(output.gather(-1, action_bs.reshape(-1, 1))) 在最开始自己实现时,我没有加log进行平滑,发现模型没法收敛(CarPole-v0 reward最大得分为200),一直是8,9徘徊。后来我看了上述实现,发现这里多了个log,这里让我觉得很困惑,因为我觉得这一步是不必要的,原因有..

更多
算法

RHLF-DQN

前言下面记录下DQN算法以及一些细节,注意哦,本博客更多目的在于当下记录,并非完整严谨的哦,也或许有理解错误。 关于DQN,看了下网上的介绍以及从Q-Learning到DQN解决state和action无法枚举完的情况。另外也强烈推荐下面链接: 知乎网友实现DQN:可直接按照这个跑通体验下效果。 PaddlePaddle/PARL:这个是paddle出的RHLF库,并提供了相应的examples帮助入门和深入,并且环境也帮忙解决好了,如果debug能力比较强的话,建议直接看这个哦。 PyTorch DQN实现:这个是pytorch官方实现的DQN算法。 一些特别的点1. 俺是value based的,所以不需要softmax看下面这个DQN网络,你觉得有问题么? 12345678910111213cl..

更多
1235