项目实训第十二周(5.17-5.23)[多MLP弱分类器投票机制]

本周项目中,小组成员分别研究模型,陈宇轩同学继续复现论文,其他人探索弱分类器。我选择了基于多MLP的弱分类器,用BERT对文本编码,然后通过多层过渡减少维度到3个类别。利用数据集创建了5个MLP,采用投票机制集成,依据测试集正确率决定每个MLP的权重,最终确定得分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这一周,我们小组明确了分工,决定个人研究个人的模型。鉴于去找学长,学长给出了弱分类器的概念,所以我们决定分开试一试。现在又两种思路,一个是继续复现李东进学长论文,另外一个就是去研究弱分类器。我们小组完成了分工。陈宇轩同学选择继续思路一,不断复现和再优化。而剩下的我们三个就开始对弱分类器进行研究,互不干预,齐头并进。
我选择了先尝试简单的基于多MLP的弱分类器的研究。这是我在过程中的理解:
首先,我学习了pytorch的相关的层数设置,包括线性层,loss函数的使用,参数的保存与模型加载等基本操作。在这基础上,我就基本上拥有了搭建简单mlp的基础。现在考虑输入输出的形式。输入应该是一个考生答案,这个答案是不能直接进入mlp的,我们需要考虑为文本编码,这里,我考虑使用bert直接生成,使用在关键词基础上处理的清洗后的数据进行句向量的生成。由于bert的生成是768维的向量,这个维数过高,这里需要处理。我考虑输出按照标签映射,由于得分经过清洗后只有0,1.5,3这三个等级,所以我考虑输出是一个归一化的1*3的向量。从768到3的跨度有点大,所以我中间用了几层去过渡,设置为256,128,32 。
我们的数据集还是比较丰富的,我就按照数据集的规模和不同内容划分了五份数据集,训练了五个mlp。这里,我采用投票机制将五个集成起来,作为一个整体进行输出。投票的时候,我考虑通过测试集上得到的正确率来重新考虑单个mlp投票的有效性。由于这是个三分类问题,基础正确率应该在0.33以上,所以如果一个mlp在测试集上的正确率大于0.6,我就按照他的投票结果来。但是如果正确率在0.3一下,我就采取标签反转的方法,让他的投票0变1,1变0重新加入。正确率在两个值之间,效果怎么算都不好,所以我认为他弃权。最后票数最高的作为得分结果返回。这里是我对mlp的尝试。

import torch

from MLP import MLP
from prepare import get_vec_and_label
from rule import idea1, statistic

def votor(test1_vec):
    acc1 = 0.65
    acc2 = 0.602
    acc3 = 0.4545
    acc4 = 0.4395
    acc5 = 0.6325
    acc_list = []
    acc_list.append(acc1)
    acc_list.append(acc2)
    acc_list.append(acc3)
    acc_list.append(acc4)
    acc_list.append(acc5)
    num_i = 768
    num_h1 = 512
    num_h2 = 256
    num_h3 = 128
    num_h4 = 32
    num_o = 3
    # vec, label = get_vec_and_label('ql_clean.csv')
    # test1_vec = vec.tolist()[-1]
    # test1_label = label.tolist()[-1]
    # test2_vec = vec.tolist()[-2]
    # test2_label = label.tolist()[-2]
    # test3_vec = vec.tolist()[-7]
    # test3_label = label
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值