Archive 2023 年 2 月 25 日

梅花一古例

“因字中有梅花、六壬之说,恰值西南方起一阵怪风,直卷的吹进屋来,即袖占一课。西南属巽,风又生巽,加酉时得十数,得巽之渐。暗忖:巽在床下,风势甚紧,事顷刻矣!体既和用,互见水火,有生无制,变为体克兑金,有水克反能生,词占俱吉,匪寇婚媾也!” -------《野叟曝言》 三符按:其以西南属巽,盖取先天之卦也,又以风加之巽,故得巽卦,后以酉时得十数而变风山渐,却以渐中之上离下坎,谓互见水火,而变化为体克兑金者,乃取之于巽,得离兑之卦,即火克金也。 此以先天卦配取变得之为本,中抽以为用,后又取处为变,并又中抽,取之离为体,又是一流也。

Read More

神经网络的一些简单思考

简单来理解一个模型,其实就是一个转换器,或者说其实就充当了一个复杂函数的角色,能够将输入的数据转换成另外一种形式呈现,如果转换出来的数据形式对于相应的任务足够直观,那么就很容易实现相应的任务。 从现在来看,元学习跟起初的构想已经产生了一些差异,最初的元学习构想的是让机器学会如何学习,但这只是一个概念,实际上来看其实并没有真正的达到这一点。 一般的迁移学习中,通常是先针对一个任务训练出一个模型,然后假设目标分布与这个训练出来的模型是可以进行映射转换,因此可以寻找出一个函数,如果模型与相近任务比较近似,这样的转换函数显然会相对简单,因此通过一般的神经网络往往就可以拟合出来。 元学习所不同的是,将多个任务都加以训练,然后综合找出来一个适合各个任务的一个,这个值相当于是妥当了多个任务后所得到一个考虑了各方面所得到的协调值,然后将此作为基础模型。 简单来说,一般的神经网络,比如二分类形状时,可以学习什么是方形,什么是非方形,如果多分类时,则可以对非方形的结果,进行再次分类,比如分成三角形或圆形,这种往往可以获取比较好的效果。 另外还有一种就是输出可以是多个结果,但是采用softmax的结果,来表达输入的数据,分别可能是哪个形状的概率是多少,然后按最大概率进行取用,比如类似VGG16就是这样的方法。 而元学习里,则会训练出来一个可以粗略判断方、圆、三角的模型,这个模型是在已有的数据中推出来的,因此操作方法上与直接拟合有所区别,目的试图提升的模型的泛化能力。 1、采用两个网络组进行拟合 如果两个网络相同的时候,则称之为挛生网络(SNN),如果两个网络结构且不共享参数时,称为伪孪生神经网络(PSNN),其实也就是异构网络,这里的关键是损失函数的结果LOSS是分别两个网络生成结构共同计算出来的。 由于两个输入是不同的数据,通过loss来控制参数的更新,对于已经标注的数据,输出可以是0或1,表示相似或不相似。 这样设计的网络显然有一个很巧妙的特点就是,假如是进行图片分类的,那么可以将同一类数据作为组合输入,最终它能够很好提取出同类数据的特征。 比如数据是图片的话,对于新的数据,只需要比较与已有的图片相似度,便可知道是否是同一类图片。 进一步的改进则是关系网络,即Relation Network(RN),这个网络在上述基础上进一步改进在于,原本是将输入数据经过模型计算出来的结果数据,直接进行比较相似度,现在改成了用加入一个子网络来转换然后计算它们之间的距离。 直观的感受就是,只是用一个网络转换输入数据,程度仍然“不够深“,表达1-shot尚可,但需要更精细的进修,生成的数据,还需要加一个网络来进行转换,这样才“更可信” 从论文上列出来的数据来看: 当随机取20个样本,进行分类时,基本的卷积孪生网络效果有较大下降,但RN效果还比较稳定,另外在经典的MAML元学习算法中,效果也比较稳定。 这里需要提及一下比RN更早的Prototypical Net,它的思路比较有特点,而且极其简单,主要是对数据进行集中的随机采样,然后求出平均值。这里利用了布雷格曼散度(gular Bregman divergences),即:对于一些点满足任意的概率分布的情况下,这些点的平均值点(mean point)一定是空间中距离这些点的平均距离最小的点,然后将这些点构成一个矩阵,称作meta data vector,然后仅仅采用欧几里得距离计算相似度,便可以得到非常好的效果。 在2020年,Han-Jia Ye和Hexiang Hu将原始数据通过ResNet转换后,再通过这样的方式来进行分类,效果在miniImageNet数据集上的5way-1shot情景分类精度提高到了62.39%,5way-5shot情景分类精度提高到了80.53%,比使用Covnet4网络作为主干网络提高了接近20%的精度。 这些方法都有一个问题,如果数据少的话,基础数据都很难保证样本的特征是足够完整的,因此像元学习之类的,在试图最大程度的扩大泛化范围,但以目前的技术水平来说,是很难保证它的总是能正确的泛化。 因此它们通常都要大数据来进行支撑,才能收到不错的效果,到了如今又有更多的选择,例如可以使用data2vec,由于一般data2vec也就比bert高一两个点而已,如果是文本相关,那么显然使用BERT加上Prototypical Net也会是一个选择。…

Read More