阶梯网络Ladder Network

在这里主要讲一下用于半监督学习的ladder network。网上别人分享的资料太少了,也不知道对不对,下面内容请带着怀疑的角度阅读,如有问题,欢迎指出。

在讲半监督学习之前,先简单聊聊监督学习

在监督学习中,我们将原始数据通过简单的预处理(标准化等等),然后输入网络,神经网络自己从数据中学习,中间隐藏层就相当于一个个特征提取器。

如下图,第一个隐藏层可能会提取一些线条等简单的特征,第二层提取一些由线条组成的轮廓等特征,......,等等,越深层提取的特征越抽象。

我们将最后得到的抽象的特征记为X=(x1,x2,...,xn)。最后,我们通过一个全连接层将这些特征进行映射:f(X) -> y (各个类别的得分)。

在整个网络学习的过程中,神经网络提取与任务有关的信息加以利用,然后却很少利用到那些无用的信息或者直接被过滤掉。

这是监督学习的内容。

 

还有一个领域是无监督学习。在深度学习领域,无监督学习常见的有自编码、受限玻尔兹曼机等。

一般来说,无监督学习的目标函数都是:

无监督学习的目标其实是为了学习原始数据X的另外一种表征X',同时要保证这个新的特征X',尽可能的能够保留原始数据信息。

 

而我们要聊的半监督学习是一种有监督和无监督相结合的模型

但是无监督学习是要尽可能的保留原始数据的信息,而有监督学习是过滤与任务无关的信息,这个冲突问题使得一直以来有监督学习和无监督学习不能很好的兼容在一起,半监督学习算法不能很好的work。如果我们可以设计一个模型,这个网络有两个分支,可以把监督任务相关的信息和无关的信息尽可能的分开,但同时又都能利用到这些信息就好了。

如下图所示,这也正是阶梯网络的设计思想。

Ladder network阶梯网络:

         当我们有少量的有标签的数据和大量的无标签数据时,形式化表示如下:

1   labeled data:  {(x1,y1),(x2,y2),(x3,y3),...,(xN,yN)}
2  unlabeled data: {(x(N+1,y(N+1)), ... , (x(N+M),y(N+M))}  
这里 M >> N

        此时,我们希望使用上面的数据集来训练得到一个模型p(y|x),我们就需要用到半监督学习。

       下面简单介绍一下ladder network模型。

      ladder network由2个编码器encoder和1个解码器decoder,它的数学形式如下:

                                                                                 

      在ladder network的编码器部分的每一个编码器类型不局限于多层感知器,我们也可以使用卷积神经网络 or RNN。           

     同时,我们在监督学习中,使用真实标签和预测标签构造loss函数,在无监督学习中,我们使用原始输入X和编码解码后的一种表征X'构造它的loss,在这里我们也可以想到半监督学习模型中的loss函数可能会用到它们两者。ladder network的loss函数形式如下:

                                                                  

        正如论文中介绍的一样,The objective function is a weighted sum of supervised (Cross Entropy) and unsupervised costs (Reconstruction costs).

          ladder network的模型结构如下:

                                            

              从图中可以看出,它有2个输出预测标签y~和y,其中the noisy output y~用于loss函数,the noiseless output y 用于测试时的分类任务。

               ladder networkxian详细结构如下:

                               

          算法伪代码如下:

                                                     

废话就这些,也没讲什么。很久没看这个了,就这样。如果想详细了解,可以参考下述论文。

 

1   Semi-Supervised Learning with Ladder Networks,地址:https://arxiv.org/abs/1507.02672

2   Deconstructing the Ladder Network Architecture,地址:https://arxiv.org/abs/1511.06430

 

 

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基恩士(Kinco)的ladder builder是一款用于PLC(可编程逻辑控制器)编程的软件工具。PLC是一种用于自动化控制的硬件设备,常用于工业领域中的各种控制系统。 ladder builder是基恩士公司为了方便用户进行PLC编程开发的工具软件。它提供了直观、简单的梯形图编程界面,使用户能够以图形化的方式编写和编辑PLC程序。通过该软件,用户可以使用梯形图的元素(如继电器、计数器、定时器等)来构建逻辑控制程序,实现对机器、设备或生产线的自动化控制。 使用ladder builder进行PLC编程的优点是它的易学性和易用性。用户无需具备高级的编程知识,只需掌握梯形图的基本原理即可。软件提供了丰富的模块和函数库,用户可以根据实际需要选择和配置,以满足各种控制需求。此外,ladder builder还支持多种编程语言,如ST(结构化文本)、FBD(功能块图)、SFC(顺序功能图)等,使得用户可以根据自己的喜好和需求选择适合自己的编程方式。 另外,ladder builder还具有调试和仿真功能,用户可以在软件中进行程序的调试和测试,以确保程序的正确性和可靠性。通过仿真功能,用户可以在实际硬件设备之前对程序进行模拟,以检查程序的逻辑是否正确,避免出现错误和故障。这大大节省了用户的时间和成本。 基恩士的ladder builder软件是一款功能强大、易于使用的PLC编程工具,它提供了丰富的功能和模块,使用户能够以图形化的方式轻松编写和编辑PLC程序,实现对机器和设备的自动化控制。无论是初学者还是经验丰富的工程师,都可以通过ladder builder来提高PLC编程的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值