精华内容
下载资源
问答
  • 无线传感器网络中缺少单一可信的路由设备,存在中间节点篡改包标记的问题,为解决这一问题,提出一种改进的节点采样包标记算法。该算法通过对ID和数据包进行HASH运算来产生水印,并把水印概率性标记到相应的标记区中...
  • 怎样查询自己正在上网的路由器的IP地址?网络节点跟踪命令tracert的用法 其实很简单 用ipconfig命令就能解决 首先在命令行里输入以下内容 ipconfig 接下来是这种情况 ...网络节点追踪 tracert命令 用法: tr...

    怎样查询自己正在上网的路由器的IP地址?网络节点跟踪命令tracert的用法

    其实很简单 用ipconfig命令就能解决

    首先在命令行里输入以下内容

    ipconfig
    

    接下来是这种情况
    在这里插入图片描述
    显然这里会列出很多网卡,你得确定你用那个网卡跟这个路由器连着同一个局域网
    然后每个正常工作的网卡都会有一个默认的网关,所谓网关其实就是,你电脑连着的第一个路由器

    网络节点追踪

    tracert命令

    用法:

    tracert  IP_address
    

    接下来就是
    在这里插入图片描述
    注意到没有,第一个节点就是你的路由器,默认网关。、

    这个命令会列出一个消息从我方电脑发从到ip_address对应的电脑的过程中经过的所有节点

    注意:这个列表不是唯一不变的,每次访问同一个的IP地址结果却各种各样,因为消息传的过程中,总是挑比较好走,且相对短的路径来走。有时候,某些节点之间出现通道杜塞的情况,这时消息会绕过这些路径

    展开全文
  • 无线传感网络中基于节点最优部署的目标追踪算法,周非,安康宁,为了进一步提高追踪精度,本文根据信息滤波的更新过程提出了一种传感器节点部署方案。传感器节点在对目标节点进行观测时,传感器
  • 平进我们在对远程主机的网络情况的好坏进行监测时用到的最多命令莫过于ping和tracert了,而且为了排查具体的问题原因,可能要试上半天才行。那有没有一个工具,把这两者的功能集中在一块,又不停的进行网络状态监测...

    平进我们在对远程主机的网络情况的好坏进行监测时用到的最多命令莫过于ping和tracert了,而且为了排查具体的问题原因,可能要试上半天才行。那有没有一个工具,把这两者的功能集中在一块,又不停的进行网络状态监测的工具呢?有,他就是mtr ,windows下的版本叫WinMTR


    ping 与 tracert 通常被用來检测网络状况和服务器状态。ping 命令会送出封包到指定的服务器,如果服务器有回应就会传送回封包,另外也会告诉我们封包来回的时间。而 tracert 命令则是用来告诉我们从用户的电脑到指定的服务器中间一共会经过那些节点(路由)和每个节点的回应速度。

    1软件下载安装

    • linux
    yum install mtr -y  #CentOS
    
    apt-get install mtr -y #Debian/Ubuntu
    

    在这里插入图片描述

    2操作说明

    MTR参数:
    
            例如:mtr -n -i -a 0.0.0.0 1.1.1.1
            -n no-dns(或简写为-n) :不对IP地址做域名解析
            -s :用来指定ping数据包的大小
            -i :使用这个参数来设置ICMP返回之间的要求默认是1秒
            -a :来设置发送数据包的IP地址 这个对一个主机由多个IP地址是有用的
            -r :已报告模式显示
            -c : 每秒发送多少包,默认为10个。英文是(–report-cycles COUNT)
            –report :结果显示,并不动态显示
            
    在MTR运行过程中,可以输入快捷字母切换模式例如:
    
    ?或 h:显示帮助菜单。
    
    d:切换显示模式。
    
    n:切换启用或禁用 DNS 域名解析。
    
    u:切换使用 ICMP或 UDP 数据包进行探测。
    
    Hostname Nr Loss% Sent Recv Best Avg Worst Last StDev
    节点 IP 或域名 编号 丢包率 已发送的数据包数量 已成功接收的数据包数量 延迟的最小值 延迟的平均值 延迟的最大值 延迟的最后一次值 标准偏差。越大说明相应节点越不稳定

    3具体例子

    在这里插入图片描述
    mtr 报告主要关注延迟(主要看 Avg)和波动(标准差 StDev)信息,丢包率(LOSS)这个指标参考价值不大。一个是有些节点可能会禁止响应ICMP,这样在这一跳丢包会变成 100% 还有一个原因是骨干网(202.97.*)这里对 ICMP package 的优先级很低,骨干网本身流量压力就很大,ICMP package 该丢就丢

    1. 上图显示经过20次才到达网址 http://speedtest.fremont.linode.com
    2. 100.64开头的ip地址为预留的内网ip来用 ,运营商未给我们家庭快递分配公网iP所以 ,通过网络供应商的路由器NAT出去上网的
    3. 出了公网后来到了 运营商骨干网络
    4. 网络链路方向->武汉移动->北京移动->香港移动->美国
    5. 到达目标服务器本地网络,即目标服务器所属提供商的网络。
      在这里插入图片描述
      由于链路抖动或其它因素的影响,节点的Best和Worst值可能相差很大。Avg统计了自链路测试以来所有探测的平均值,所以能更好的反应出相应节点的网络质量。而StDev越高,则说明数据包在相应节点的延时值越不相同,即越离散。所以标准偏差值可用于协助判断Avg是否真实反应了相应节点的网络质量。

    4常见的链路异常场景

    1. 目标地址出现了100%的丢包 ->目标服务器设置了防火墙等相关安全策略
    2. 运营商骨干网络,出现了明显的丢包,但后续节点均未见异常 ->ICMP限速所致
    3. 出现循环跳转 ->运营商相关节点路由配置异常所致
    4. 骨干网络跳中无法收到任何反馈 ->相应节点中断所致。建议结合反向链路测试做进一步确认

    5链路测试步骤

    本地网络对应的公网IP ->正向链路测试->反向链路测试->测试结果分享

    参考 :
    WinMTR使用教程
    What is MTR
    网络链路不稳定的排查问题方法

    展开全文
  • 这些设备会被bridge连接到网桥cni0(docker0)上,也就形成了下面红框中的状态: 四、Flannel网络插件安装 由于是单节点集群,且对网络性能要求没有那么苛刻,因此选择了flannel。后续也会尝试calico。 a)停止node...

    一、前言

    kubernetes集群搭建方法很多

    1.可以用第三方工具,比如minikube,kubeadm。

    2.也可以去kubernetes官网下release出的二进制bin文件。

    3.下载kubernetes源码,手动编译后生成二进制bin文件,该方法适用于需要对kubernetes源码进行改动或者二次开发的同学。

     

    本文采用第三种方法,即编译源码的方式。

    编译过程不在这详述,安装好后,如果没有安装额外的cni插件,默认会以docker0作为pod的网络。但在默认的Docker配置中,每个Node的Docker服务会分别负责所在节点容器的IP分配。Node内部得容器之间可以相互访问,但是跨主机(Node)网络相互间是不能通信。

    因此需要安装额外的cni网络插件,让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址,并且不同node上的pod容器可以相互通信。

     

    二、CNI插件类型简介

    1.Flannel

    简单解释下这个原理图:

    • 数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P(pair to pair)的虚拟网卡,flanneld服务监听在网卡的另外一端。
    • Flannel通过Etcd服务维护了一张节点间的路由表,该张表里保存了各个节点主机的子网网段信息。
    • 源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一样的由docker0路由到达目标容器。
    • 当然也可以不用udp进行封装,vxlan、host-gw等。

    Flannel配置第3层IPv4 Overlay网络。它会创建一个大型内部网络,跨越集群中每个节点。在此Overlay网络中,每个节点都有一个子网,用于在内部分配IP地址。在配置Pod时,每个节点上的Docker桥接口都会为每个新容器分配一个地址。同一主机中的Pod可以使用Docker桥接进行通信,而不同主机上的pod会使用flanneld将其流量封装在UDP数据包中,以便路由到适当的目标。

    Flannel有几种不同类型的后端可用于封装和路由。默认和推荐的方法是使用VXLAN,因为VXLAN性能更良好并且需要的手动干预更少。

    总的来说,Flannel是大多数用户的不错选择。从管理角度来看,它提供了一个简单的网络模型,用户只需要一些基础知识,就可以设置适合大多数用例的环境。一般来说,在初期使用Flannel是一个稳妥安全的选择,直到你开始需要一些它无法提供的东西。

     

    2.Calico

    Calico是Kubernetes生态系统中另一种流行的网络选择。虽然Flannel被公认为是最简单的选择,但Calico以其性能、灵活性而闻名。Calico的功能更为全面,不仅提供主机和pod之间的网络连接,还涉及网络安全和管理。Calico CNI插件在CNI框架内封装了Calico的功能。

    与Flannel不同,Calico不使用overlay网络。相反,Calico配置第3层网络,该网络使用BGP路由协议在主机之间路由数据包。这意味着在主机之间移动时,不需要将数据包包装在额外的封装层中。BGP路由机制可以本地引导数据包,而无需额外在流量层中打包流量。与flannel相比降低了损耗,提高了效率。

    除了性能优势之外,在出现网络问题时,用户还可以用更常规的方法进行故障排除。虽然使用VXLAN等技术进行封装也是一个不错的解决方案,但该过程处理数据包的方式同场难以追踪。使用Calico,标准调试工具可以访问与简单环境中相同的信息,从而使更多开发人员和管理员更容易理解行为。

    除了网络连接外,Calico还以其先进的网络功能而闻名。 网络策略是其最受追捧的功能之一。此外,Calico还可以与服务网格Istio集成,以便在服务网格层和网络基础架构层中解释和实施集群内工作负载的策略。这意味着用户可以配置强大的规则,描述Pod应如何发送和接受流量,提高安全性并控制网络环境。

    如果对你的环境而言,支持网络策略是非常重要的一点,而且你对其他性能和功能也有需求,那么Calico会是一个理想的选择。此外,如果您现在或未来有可能希望得到技术支持,那么Calico是提供商业支持的。一般来说,当您希望能够长期控制网络,而不是仅仅配置一次并忘记它时,Calico是一个很好的选择。

     

    3.Weave

    Weave是由Weaveworks提供的一种Kubernetes CNI网络选项,它提供的模式和我们目前为止讨论的所有网络方案都不同。Weave在集群中的每个节点之间创建网状Overlay网络,参与者之间可以灵活路由。这一特性再结合其他一些独特的功能,在某些可能导致问题的情况下,Weave可以智能地路由。

    为了创建网络,Weave依赖于网络中每台主机上安装的路由组件。然后,这些路由器交换拓扑信息,以维护可用网络环境的最新视图。当需要将流量发送到位于不同节点上的Pod时,Weave路由组件会自动决定是通过“快速数据路径”发送,还是回退到“sleeve”分组转发的方法。

    对于那些寻求功能丰富的网络、同时希望不要增加大量复杂性或管理难度的人来说,Weave是一个很好的选择。它设置起来相对容易,提供了许多内置和自动配置的功能,并且可以在其他解决方案可能出现故障的场景下提供智能路由。网状拓扑结构确实会限制可以合理容纳的网络的大小,不过对于大多数用户来说,这也不是一个大问题。

     

    三、flannel网络下,pod获取ip的流程:

    结合使用docker容器引擎以及flannel插件来说就是,kubelet通过CRI接口创建POD,它会第一个创建Infra容器,这一步是调用Dokcer对CRI的实现(dockershim),dockershim调用docker api来完成,然后就会设置网络,首选需要准备CNI插件参数、其次就是传递参数并调用这个CNI插件去设置Infra网络。对于flannel插件所需要的参数包含2个部分:

    1. kubelet通过CRI调用dockershim时候传递的一组信息,也就是具体动作比如ADD或者DEL以及这些动作所需要的参数,如果是ADD的话则包括容器网卡名称、POD的Network namespace路径、容器的ID等。

    2. dockershim从CNI配置文件中加载到的(在CNI中叫做Network Configuration),也就是从--cni-conf-dir目录中加载的默认配置信息。

    有了上面2部分信息之后,dockershim就会把这个信息给flannel插件,插件会对第二部分信息做补充,然后这个插件来做ADD操作,而这个操作是由CNI bridge这个插件来完成的。这个bridge使用全部的参数信息来执行把容器加入到CNI网络的操作了。它会做如下内容:

    1. 检查是否有CNI网桥,如果没有就创建并UP这个网桥,相当于在宿主机上执行ip link add cni0 type bridgeip link set cni0 up命令

    2. 接下来bridge会通过传递过来的Infra容器的网络名称空间文件进入这个网络名称空间中,然后创建Veth Pair设备,然后UP容器的这一端eth0,然后将另外一端放到宿主机名称空间里并UP这个设备。

    3. bridge把宿主机的一端连接到网桥cni0上

    4. bridge会调用IPAM插件为容器的eth0分配IP地址,并设置默认路由。

    5. bridge会为CNI网桥添加IP地址,如果是第一次的话。

    6. 最后CNI插件会把容器的IP地址等信息返回给dockershim,然后被kubelet添加到POD的status字段中。

    可以看到下面的截图:

    cni0网桥其实就是docker0虚拟网卡,他们会和flannel0虚拟网卡通信。

    而veth04b806e8和veth9bdcc769等设备,就是容器Veth Pair设备在宿主机的另一端。这些设备会被bridge连接到网桥cni0(docker0)上,也就形成了下面红框中的状态:

     

    四、Flannel网络插件安装

    由于是单节点集群,且对网络性能要求没有那么苛刻,因此选择了flannel。后续也会尝试calico。

    a)停止node的kubelet和docker服务

    systemctl stop docker

    systemctl stop kubelet

     

    b)向etcd注册网段。

    由于flanneld需要依赖etcd来保证集群IP分配不冲突的问题,所以首先要在etcd中设置 flannel节点所使用的IP段。

    利用etcdctl添加k-v记录,在文件/coreos.com/network/config中添加记录。

    etcdctl --endpoints="https://192.168.209.130:2379" set /coreos.com/network/config '{"Network":"10.149.0.0/16","Backend": {"Type": "vxlan"}}'
    

    network表示想要pod使用的ip网段cidr。这里可以随意选择网段,我选择了10.149.0.0/16。type选择vxlan,性能较好。

     

    c)安装Flannel

    1.下载flannel,并解压:https://github.com/coreos/flannel/releases。选择最新版的0.12.0版本的二进制包。解压后,有用的就2个文件,flanneld二进制程序和一个脚本:mk-docker-opts.sh。其中flanneld就是我们需要启动的flannel程序;而mk-docker-opts.sh的作用在于将分配给 flanneld 的 Pod 子网网段信息写入指定的docker配置文件中,后续 docker 启动时使用这个文件中的环境变量配置 docker0 网桥,具体如何使用请往下看。

    2.将flanneld和mk-docker-opts.sh移动到/usr/bin/目录下,这样就可以直接运行,不需要加路径。

    3.配置flanneld的启动配置文件:

    新建文件:/etc/kubernetes/flanneld

    FLANNEL_OPTIONS="--etcd-endpoints=http://9.134.33.208:2379 \
    --etcd-prefix=/coreos.com/network"

    这个文件配置了flannel启动所需参数变量,主要就是etcd的信息,因为flannel需要向etcd获取我们所设置的网段,并根据此对pod ip进行分配。

    新建文件:/etc/systemd/system/flanneld.service

    [Unit]
    Description=Flanneld overlay address etcd agent
    After=network-online.target network.target
    Before=docker.service
    
    [Service]
    Type=notify
    EnvironmentFile=/etc/kubernetes/flanneld
    ExecStart=/usr/bin/flanneld --ip-masq $FLANNEL_OPTIONS
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target

    其中,EnvironmentFile是flanneld的环境配置文件,这个文件里包含了flanneld运行需要用到的一些变量,比如ExecStart=/usr/bin/flanneld --ip-masq $FLANNEL_OPTIONS中的$FLANNEL_OPTIONS变量,就是/etc/kubernetes/flanneld中定义的。

     

    d)安装CNI网络插件

    CNI插件可以认为是一种适配插口,能够让kubernetes与flannel,calico等无修改进行对接安装。由于kubernetes采用二进制的形式,这里也采用二进制的形式进行安装。

    1.新建存放CNI插件的目录:mkdir -p /opt/cni/{bin,net.d}

    2.下载cni到上面的bin目录,并解压:https://github.com/containernetworking/plugins/releases,选择最新版本的v0.8.5的二进制包。

    3.在上面的net.d目录新建10-flannel.conflist文件,内容如下:

    {
      "name": "cni0",
      "cniVersion": "0.8.5",
      "subnetFile": "/run/flannel/subnet.env",
      "plugins": [
        {
          "type": "flannel",
          "delegate": {
            "hairpinMode": true,
            "isDefaultGateway": true
          }
        },
        {
          "type": "portmap",
          "capabilities": {
            "portMappings": true
          }
        }
      ]
    }

    name: 网络名称而不是网桥的名字

    cniVersion: 插件版本,可以不写。

    subnetFile: 本机flanneld从etcd中申请的本机网段,这个信息存放在哪个文件中,默认就是/run/flannel/subnet.env。这个文件是flanneld服务启动后,自动生成的。

    plugins:表示使用什么插件

    type: 插件类型,这里是flannel,如果尝试其他网络插件,这些就写插件的名字比如calico等

     

    e)启动flanneld服务。

    systemctl daemon-reload
    systemctl start flanneld
    systemctl enable flanneld

    然后检查下网卡信息:ifconfig

    发现会多一个:

    这个虚拟网卡就是上面flannel原理图中的flannel0。ip地址为10。149.84.0,也符合我们在etcd中注册的网段。

    然后再检查下生成的/run/flannel/subnet.env文件:

     

    f)修改docker服务配置,并启动docker

    pod的ip实际上是由docker分配的,且docker0虚拟网卡需要与flannel0通信,也就是两者必须在同一网段。那么就需要修改docker的网络桥(docker0)ip。

    bip这个参数就是设置docker分配给容器的ip网段,以及自身docker0的ip。

    可以在/etc/docker/daemon.json文件中添加bip这个选项来修改。或者在/etc/systemd/system/docker.service中的ExecStart=/usr/bin/dockerd后加上bip这个参数。

    那么该如何知道flannel0所在的ip段呢。之前mk-docker-opts.sh脚本和flannel生成的生成的/run/flannel/subnet.env起作用了。

    利用mk-docker-opts.sh可以生成符合docker服务的配置参数。命令如下:

    mk-docker-opts.sh -d /run/docker_opts.env

    -d后就是期望生成的符合docker的配置参数格式的文件。mk-docker-opts.sh脚本默认会从/run/flannel/subnet.env读取信息,然后转换成docker格式的配置。输出到/run/docker_opts.env。

    /run/docker_opts.env内容如下:

    可以看到DOCKER_NETWORK_OPTIONS里包含了bip参数配置和其他参数配置。

    接下来就是修改/etc/systemd/system/docker.service文件来添加docker的bip启动参数了:

    EnvironmentFile参数表示docker变量的读取位置,这里就是/run/docker_opts.env

    ExecStart=/usr/bin/dockerd $DOCKER_NETWORK_OPTIONS其中的$DOCKER_NETWORK_OPTIONS变量就是/run/docker_opts.env中的DOCKER_NETWORK_OPTIONS。

    修改好后,启动docker服务:

    systemctl daemon-reload
    systemctl start docker
    systemctl enable docker

    检查ifconfig:

    生成docker0网卡,ip和flannel0在同一网段。

     

    g)配置kubelet服务,并重启kubelet

    配置kubelet服务的CNI插件目录等。

    修改kubelet服务文件,增加3个参数:--cni-bin-dir=/opt/cni/bin --cni-conf-dir=/opt/cni/net.d --network-plugin=cni

    /etc/systemd/system/kubelet.service

    修改完后,启动kubelet:

    systemctl daemon-reload
    systemctl start kubelet
    systemctl enable kubelet

    检验,看node是否ready即可:

    kubelet get node,如果node ready了,表示安装成功。

     

    五、注意事项

    a)如果修改docker后,启动docker服务,docker0网卡的网段没有变化,没有生效,则需要手动把docker0网卡删除,再启动docker服务即可。

    sudo service docker stop

    sudo ip link set dev docker0 down

    sudo brctl delbr docker0

    sudo service docker restart

     

    展开全文
  • 知识追踪:使用图神经网络对学生知识点熟练度建模(将学生的知识点掌握程度基于时间进行建模) 计算机辅助教学系统的进步带来了知识追踪的研究工作增加,在这个平台上,学生的表现是随着时间逐渐被预测的,正确的...

    (持续更新ing)

    github源码:https://github.com/jhljx/GKT

    Interaction Networks for Learning about Objects, Relations and Physics  Code

    Relational inductive biases, deep learning, and graph networks(关系归纳偏差,深度学习和图网络) code

    Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation  code

    Inductive Representation Learning on Large Graphs (从大图中学习归纳表示)   code

    Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

    目录

    知识追踪 —— 使用图神经网络对学生知识点熟练度建模

    (将学生的知识点掌握程度基于时间进行建模,用来预测学生随着时间做对练习题的概率)

    1、背景介绍

    2、知识追踪

    3、GNN

    4、基于图模型的知识追踪

    4.1问题定义

    4.2 解决方法

    4.3 实现潜在的图结构和​任意函数

    4.4 同之前方法的比较

    5、实验

    5.1 数据集

     5.2实现细节

    5.3 预测性能

    5.4 预测的可解释性

    5.5 网络分析

    6、合并Richer_GNN架构


    知识追踪 —— 使用图神经网络对学生知识点熟练度建模

    (将学生的知识点掌握程度基于时间进行建模,用来预测学生随着时间做对练习题的概率)

    1、背景介绍

    在智慧教育系统(E-learning 系统)上,学生的表现可以随着时间逐渐被预测,正确的预测能够帮助学生准确选择和现在认知水平相当的试题,这种电子学习平台可以帮助学生提高学习积极性,目前有很多知识追踪的方法,最近提出有:DKT(使用了RNN模型),这个方法证明比之前的方法都要好,从数据结构的角度来看,课程学习也可以被建模成图模型,将熟练掌握一个知识概念,所需要掌握的知识点建模成图上的点,并且这些知识点之间是互相关联的。众所周知,将关于数据的图结构性质的先验知识引入模型可以提高模型的性能和可解释性。

    如:将一个知识概念拆分为三个知识点,表示为 V={v1,v2,v3},并且掌握v1,就必须要掌握知识点v2,同时,掌握知识点v2,也必须要掌握v3  (比如要解决二元一次方程就必须会解一元一次方程,要解决一元一次方程就必须会移项),因此结合图结构的知识点模型,可以有效地提高知识追踪模型,然而DKT并没有考虑到知识点之间地这种关系,以往基于深度学习地方法(如RNN)的体系结构,通常对序列数据表现良好,但是不能有效地处理图形结构的数据。

    最近,基于图神经网络的研究兴起,虽然在这种不规则的域上操作数据,对现有的及其学习方法提出了挑战,各种泛化框架和重要操作在多个研究中也取得了比较好的结果,GNN从关系归纳偏差的角度出发,结合人类对数据本质的先验知识,提高了机器学习模型的效率,这部分,Battaglia等人认为是可解释的。GNN可以找到潜在的知识结构,但问题也在这,在知识追踪中使用图神经网络的时候,如何表示潜在知识结构是很困难的,GNN对于图形结构数据的建模具有相当大的表达能力。这篇论文,我们将其重新定义为一个GNN应用程序,并提出了一个新的模型,可以在考虑潜在知识结构的情况下预测学生知识掌握程度

    在一些知识追踪的案例中,知识点之间的关系和关系的强度,没有明确的提供,对于人类专家来说,启发式和手动注释内容关系是必要的,但是需要有领域专家花费大量时间才可以完成。所以很难提前将所有的知识都进行知识点图建模,我们把这种问题定义为隐藏的图结构问题,像概念回答转移概率,另外一个解决方案是在学习图结构本身的同时优化主要任务,最近关于GNN研究中,相关的话题就是图的边(知识点关系)的学习。

    这篇论文,主要提出了基于图神经网络的图知识追踪,将知识追踪重新定义为GNN中的时间序列节点级分类问题。这种构想是基于3种假设:1.课程知识被分解为指定数目的知识点 2.学生目前是有指定的知识掌握程度,设为(knowledge state)3. 课程知识被建模为一个图,这个图用来更新学生的知识点掌握程度,当学生答对/答错一道题,那么学生的认知状态受影响的不仅仅是这道题的知识点,还有这个知识点相关的其他知识点,也就是邻接点。

    数据集使用的是两个开放的数学联系日志数据集的子集,对这个方法进行了实例验证,在预测性能上面,我们的模型比以往的基于深度学习的模型表现要优,这意味着我们的模型在改善学生成绩预测上面有很大的潜力。此外,通过对训练模型的预测模式的分析,可以从模型的预测中清楚地解释学生熟练程度的过程,即学生所理解的概念及其所需的时间,而以往的方法解释能力较差。这意味着我们的模型比以前的模型提供了更多可解释的预测。在假设目标课程是图结构的情况下,跟踪实际教育环境中的应用,所得结果都验证了我们的模型在提高知识的性能和适用性方面的潜力。

    贡献如下:

    我们证明了将图神经网络应用在知识追踪中,提高了学生学习成绩预测的性能,不需要任何附加的信息,在更加精准的内容个性化下,学生可以有效地掌握课程知识。平台可以提供更高质量的服务来维护用户的高参与度。

    我们的模型提高了模型预测的可解释性。教师和学生可以更准确地识别学生的知识状态,通过理解推荐练习的原因,学生可以更积极地进行推荐练习。E-learning平台和教师可以通过分析学生的失败点来更容易地重新设计课程。

    为了解决隐式图结构问题,我们提出各种实现方式,并通过实验验证其有效性。不需要专家花费大量的精力,对概念之间的关系进行的注释。教育专家可以有一个新的标准来考虑什么良好的知识结构是对课程的改进设计。

    2、知识追踪

          Xt 表示在时间t时刻是否正确回答一系列问题q(向量) 的概率 r,yt是学生在下个时间 t+1正确回答每个练习 的概率,KT是知识追踪模型。Since Piech等人第一次提出以深度学习为基础来做知识追踪,并且也证明了RNN的强大的解释能力,后续的研究都采用RNN或者其拓展知识来做知识追踪,这个模型定义了一个隐藏的状态,或者是学生当前的一个知识储备状态,并且随着学生做题的状态不断地更新,以RNN为代表地模型,定义了一个固定长度的向量X,Xt由两种离散的值0和1表示,0表示题目做错,1表示题目做对,训练目标是最小化模型下观察到的学生反应序列的负对数似然(NLL)。

    3、GNN

    GNN(Graph Nueral network)图神经网络是一种作用在图数据上的神经网络,虽然表示图数据很复杂,但是它的超强解释性还是吸引了很多人对此投入研究,对GNN的研究兴趣有很大一部分原因是来自CNN,CNN可以摘录多尺度局部空间特征及其组合构造表现力,从而在各种研究领域,如计算机视觉。然而,CNNs只能对常规的欧几里德数据(如图像和文本),而现实世界中的一些应用程序生成非欧几里德数据。另一方面,GNN将这些非欧几里德数据结构视为图形,并使CNN的相同优点也能反映在这些高度多样化的数据上。巴塔利亚等人从关系归纳偏置的角度解释了GNN和CNN的这种表达能力,通过融合人类对数据本质的先验知识,提高了机器学习模型的样本效率。

    在GNN的几个研究课题中,边缘特征学习是与我们工作最相关的。图形注意力网络(GATs)将多头部注意力机制应用于GNN,并在训练过程中学习边缘权值,而不需要预先定义它们。神经关系推理(NRI)利用变分自动编码器(VAE)以无监督的方式学习潜在的图结构。我们的方法假设一个课程的知识概念的潜在的图结构,并使用图形运算符来模拟学生随着时间对于知识点的熟练度变化。然而,在许多情况下,图结构本身并没有显式地提供。我们通过设计模型来解决这个问题,这些模型学习边连接本身,同时优化学生的表现,通过扩展这些边缘特征学习进行预测机制。我们请在第3.3节对此进行详细解释。

    4、基于图模型的知识追踪

    4.1问题定义

    将一门知识建模为图,要熟练掌握这个知识,需要掌握很多子知识点,这里知识定义为 G = (V,E) , 知识点为 {v1,v2,v3....vN} ,这些子知识点之间的关系定义为边E(edge),其中 ,学生当前的知识点熟练度建模为表示学生在t时刻,对于知识点v的掌握程度,并且这个掌握程度是随着时间而变化的,当学生回答了包含知识点vi的题目时候,与vi相关的,就会更新,并且与v相关的邻接知识点也会更新,Ni表示vi的所有相连的知识点

    4.2 解决方法

    GKT将GNN应用于知识跟踪任务,并利用知识的图结构特性。我们在图1中展示了GKT的体系结构。以下段落详细解释了这些过程。

    4.2.1 聚合,首先,该模型集合了所回答的概念i及其邻近概念j∈Ni的隐藏状态和嵌入

    ,X表示对每一道题回答的结果的记录,是一个输入向量,是一个矩阵,嵌入了知识点的下标和的反馈,

    表示每个知识点的下标,表示知识点矩阵的第K行,并且e是embeeding的大小。

    4.2.2 更新。接下来将根据已经聚合的特征和知识图架构来更新整个知识的结构图

    是一个多层的感知器,是一个擦除-添加门,是一个门控递归单元,表示任意函数,用来表示基于知识图谱结构将信息传送到邻接结点,我们在3.3节提出不同的实现方法。

    4.2.3 预测。最后,这个模型输出的是,每个学生在下一个时间点正确回答每个知识点的预测概率。

    Wout是每个节点的公共权重矩阵,bk是节点k的偏置项,是sigmoid函数,训练模型来最小化观测到的NLL的值。我们可以用边缘信息,从邻接的知识点中收集学生的知识掌握程度。我们验证了,基于目标学生知识状态来预测是更好的一种预测方式,所以我们只使用更新过的学生认知状态。

    4.3 实现潜在的图结构和任意函数

    GKT能够利用知识本质的图结构来进行知识追踪,但在大多数情况下,这种结构并没有给出,为了实现这种图结构和,我们介绍两种方法。

    4.3.1 基于统计的方法,这种方法实现了基于一定统计量的邻接矩阵A,并且将这种方法应用到了

    这里都是多层感知机,这里介绍三种类型的图结构

    (1)Dense graph 是一个紧密连接的图

    (2)Transition graph 是一个转变概率矩阵,当i <> j,Ai,j = ,否则 就是 0. 表示在概念i被回答后,j立马被回答的次数。

    (3)DKT graph 基于被训练好的DKT模型的条件预测概率而生成的图。

    GKT模型的架构,当学生回答了某一个知识点时,GKT首先聚合与其相关的知识点的特征,根据这些特征更新学生的认知状态,最后预测学生在下次正确回答这些知识点的概率。

    4.3.2 基于学习的方法,在优化性能预测的同时,会同步学习到这种图结构,这里介绍三种图结构学习的方法。

    (1)参数邻接矩阵(Parametric adjacency matrix PAM),简单地参数化邻接矩阵A,并且在一定条件下,用其他参数对其进行优化,比如A满足邻接矩阵,和公式2定义类似。

    (2)多头机制 (Multi-head Attention MHA) :利用多头注意力机制,依据两点之间的特征,推断两点之间关系(边)的权重。定义入下:

    这里k是下标,标注是第k个head,表示从点vi到点vj的第k个head的注意力权重,fk表示第k个head的注意力权重。

    (3)变量自动编码器(Variational autoencoder VAE)假设表示边类型的离散变量,并使用点的特征来进行填充,定义入下:

    共有k种边类型,是从Gumbel-Softmax分布中采取的潜在变量,是第k个边类型的神经网络,VAE用来最小化NLL和在编码分布q(z|x)和先验分布p(z)中的KL散度的,使用一个边类型来展示非边类型,表示在这种类型的边上不会有任何信息会被传递,在这种非边的类型上设置高概率会导致生成稀疏图。

    这种学习方法接近于基于边的特征的学习策略,MHA和VAE分别受到了GAT和NRI的启发,然而,我们是基于两种方法来修改的,首先,我们根据静态特征而不是动态特征计算边缘权值,如概念和响应的嵌入。这使得知识图的结构不会随着学生和时间而改变,考虑到知识追踪的实质,这种方式是更好的。然后,依据VAE的说法,我们限制了每一个时刻里面的与答案相关的边类型的推测,这符合知识追踪的状况,学生在每一个时间段里面只需要回答一小部分的概念,这也使得计算成本从原始NRI的降低到O(KN)。

    我们会在5.1节讨论这三种方法的不同点

    4.4 同之前方法的比较

    可以从两个方面来进行比较,如图2

    一个比较的点,是对学生当前认知水平的定义,在DKT中,表示单个隐藏的向量,并且每个知识状态都是相关的,但是,对每个概念的知识状态进行建模会变得复杂,导致长时间序列的性能下降,预测学生对于每一个知识点熟练度的可解释性变差,为了解决这些缺点,有人提出了动态键值记忆网络(Dynamic Key-Value memory network DKVMN)DKVMN使用了两种记忆矩阵,一种矩阵看作学生当前认知状态的栈,分别定义每个知识点,虽然这和GKT的概念差不多,但还是有些许差别,GKT是直接对每个知识点进行建模,而DKVMN则是定义了低维的潜在向量,再对它们的知识状态建模。

    另一个方面是指知识状态更新过程中概念之间的相互作用。在DKVMN中,使用简单的点积注意机制计算原始输入概念和潜在概念之间的关系权重,这可能不足以建模知识概念之间的复杂和多重关系。同时,GKT利用K个不同神经网络对K个边缘类型的输入概念之间的关系权值或边缘权值进行建模。 这可以对概念之间的多个复杂关系进行建模。

     

    5、实验

    5.1 数据集

    这个实验我们使用了两个开放的学生数学练习日志数据集:在线教育服务ASSISTments的数据和KDDCU的用于教育数据挖掘挑战的数据。我们提供了表1中现有概念标签的示例。

    使用某些条件对于数据进行预处理,对于ASSISTments数据集,将同时回答的日志组合成为一个,随后提取与命名概念标记关联的日志,最后提取回答了至少有10次的日志。对于KDDCup数据集,我们将问题和步骤的结合视为一个答案,然后抽取与概念标签相关的日志,最后抽取回答了至少有10次的日志。

    将同步答案日志合并到一个集合中,可以防止不公平的高预测性能,因为频繁出现的标记,不包括概念***,每个概念标记的相应次数对日志进行阙值化,可以确保足够数量的日志来消除噪声。利用上述条件对数据集进行处理,最终在ASSISTments中获得了62,955条日志记录,包括1000个学生和101个知识点,在KDDCup数据集中获得了1000个学生和211个知识点。

     5.2实现细节

    每个数据集,都将学生的数据分成:训练、验证、测试三大块,所占比例分别为8:1:1,使用训练数据集来进行训练,用验证数据集来调整超参数。

    DKT:根据Piech等人的研究,使用循环神经网络中的GRU来寻找超参数,隐藏层的大小为200,使用dropout为0.5的速率进行减枝,将变成,批大小为32,使用Adam为优化器,学习速率为0.001

    DKVMN:根据Zhang等人的研究,对ASSISTments数据集,内存槽的大小为20,隐藏向量的大小为32;对KDDCup数据集,内存槽的的大小为50,隐藏向量的大小为128;批大小为32,使用Adam为优化器,学习速率为0.001

    GKT:所有的隐藏向量和嵌入层矩阵的大小为32,对于模型中的MLP,将隐藏向量的dropout下降为

    5.3 预测性能

     

    5.4 预测的可解释性

    接下来,将GKT预测学生认知状态的过程进行可视化,并且评估模型预测的可解释性。可视化帮助学生以及老师发现过去的知识掌握情况,高效且直观,这是非常有必要的。

    我们从两个角度来评估模型的可解释性。1、根据学生已经回答过的知识点,更新相关知识点的掌握情况        2、被更新的部分是根据知识点的结构图来调整的

    以下步骤是分析整个知识点状态的变化过程

    (1)在时间T之前,随机抽取学生的做题情况

    (2)在训练模型的输出层,移除掉偏差向量。

    (3)将学生的回答向量输入到训练模型,并将输出向量进行叠加

    (4)将输出值进行正则化,结果控制在0到1之间

    在图3a和图3b中,我们随机抽取了一名学生的做题日志,并以图的形式描绘了学生的知识状态,x轴表示时间,Y轴表示知识点,格子颜色表示学生知识点掌握的变化情况,红格子表示掌握程度降低,绿色表示掌握情况增加。

    图3a表示GKT会更具知识点的相关性来更新学生的知识点掌握情况,而DKT依据模糊的依据将所有状态进行更新,在图3b中,能看到时间点28和75的时候,虽然知识点29没有被回答,但是因为和4有关,4有被回答,所以29的状态也被更新了。这表明GKT可以对学生的知识点掌握情况提供更明确和合理的解释。

    5.5 网络分析

    最后,从被训练的GKT模型中抽象出已经学习到的图结构,进行分析。在基于学习的方法中,GKT学习有助于预测学生表现的图形结构。 因此,从模型中提取的图显示了较高的预测性能,可以提供对良好知识结构的洞察。 图中描述了网络,其中左侧显示网络概述,右侧显示图形的本地连接。 节点的颜色是从蓝色到红色的,在那里,一个练习的答案越早,蓝色的是阴影。 节点的大小与它们的出度成正比,这意味着更大的节点会影响更多的节点。首先,在用于比较的可视化DKT图中,类似颜色的节点相互连接,从而生成集群。 当DKT用相同的单个隐藏向量对所有概念的隐藏状态进行建模时,对概念之间的存在长期依赖的建模是困难的。 因此,该模型倾向于学习以时间接近的顺序回答的节点之间的依赖关系。 从PAM中提取的图形表现出类似于DKT图的结构,其中构造了簇;从图形的右上角,我们可以看到一些几何概念是连接的。 从MHA 中提取的图显示了来自某些节点的几个即将到来的边缘。虽然模型可能已经了解了不同于其他图中概念之间的一些 特殊依赖关系,但它的预测可能是有偏差的。 因此,我们必须评估这种结构对预测性能的影响。 从VAE中提取的图与其他图不同,因为它形成了一个密集的图,其中几个节点相互连接。 虽然这些联系很多都很难解释,但从图的右下角,我们可以识别一些统计概念是连接的。

    6、合并Richer_GNN架构

    我们提出了第一种基于GNN的知识跟踪方法,并验证了相对 简单的体系结构。 在下面,我们讨论了三个方向来改进我 们的模型。 一种是根据节点的边缘类型对节点之间的信息传播施加适当的约束。 在本研究中,为了进行公平的比较,我们为基于统计的方法和基于学习的方法定义了两种类型的边缘。 然而,我们没有对每个节点类型施加任何约束;因此,对每个节点类型(如依赖方向和因果关系)的意义可能很小,特别是对于学习的边缘。 解决办法是根据节点的边缘类型对节点之间的信息传播施加一些约束例如定义边缘的方向,并将传播限制在从源节点到目标节点的一个方向上。 此外,这可 以作为关系归纳偏差,提高GKT的样本效率和可解释性。 另一个是将所有概念(如DKT)所共有的隐藏状态合并到GKT中。虽然只采用单个隐藏向量来表示学生知识状态,使DKT中概念之间复杂交互的建模复杂化,但将这种类型的表示添加到GKT中可以通过充当全局特征来提高性能。 全局特征意味着每个节点的共同特征,并且可以表示跨变量概念或学生原始概念的共同知识状态智力对个体概念理解的不变。最后一个可能的解决方案是实现多跳传播。 在本研究中,我们将传播限制在单个跳,即响应某个节点的信息只在一个时间步长传播到其相邻节点。 然而,要有效地模拟人类的学习机制,使用多跳将更合适。 此外,这可以使模型能够学习稀疏连接,因为模型可以将特征传播到远程节点,而不连接到其他节点。

    深度学习的黑盒问题被人诟病已久,图神经网络的信息传播机制相较传统深度学习模型更具有可解释性。知识图谱提供了现实世界的事实知识,利用图神经网络模型尤其是概率图神经网络应用在知识图谱中实现逻辑推理,从而显式地生成基于知识图谱的推理路径,或许可以期待打开深度学习的黑盒。 

    展开全文
  • 这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步。前文分享了Wireshark安装入门和一个抓取网站用户名和密码的案例,本篇文章将继续深入...
  • 因为区块链的冗余备份,要求所有节点都需保存全量的数据文件,在这个节点间,假设有用户用自己创建一个区块链节点来进行DApp的开发,可又不想参与共识,那对于这个用户而言,同步大量的数据是非常消耗时间的,而且...
  • ROS 节点通信

    千次阅读 2016-12-24 13:34:23
    "节点(Node)" 是ROS中指代连接到ROS网络的可执行文件的术语。接下来,我们将会创建一个发布器节点("talker"),它将不断的在ROS网络中广播消息。 //发布节点 #include "ros/ros.h" #include "std_msgs/String.h" int ...
  • 一个运行中的 Elasticsearch 实例称为一个节点,而集群是由一个或者多个拥有相同 cluster.name 配置的节点组成, 它们共同承担数据和负载的压力。当有节点加入集群中或者从集群中移除节点时,集群将会重新平均分布...
  • Houdini 节点

    千次阅读 多人点赞 2020-03-06 15:41:38
    …Houdini 节点 OP   解释 Ambient Light Generators 环境灯,控制场景里环境光的颜色和亮度 Auto Rig Biped Generators 自动生成一套两足角色的骨架装配 Bodypart Arm Generators 手臂装配 Bodypart Hand ...
  • 如Nodeontainer类,用于追踪一组节点指针。 NodeContainer nodes; nodes.Create(2); 2、应用 需要被仿真的用户程序被抽象为应用。这些方法以“Time”对象为参数,记录接收时间和发出时间。NS3用...
  • 基于图形的知识跟踪:基于图神经网络的学生能力建模 首次将GNN应用于知识追踪,提出了一种基于GNN的知识跟踪方法,即基于图的知识跟踪。将知识结构转换为一个图,使我们能够将知识跟踪任务转化为GNN中的时间序列...
  • 多要素追踪分析

    2017-12-15 10:49:14
    网络数据集中,创建流向后需要进行节点共同的上游或下游追踪分析,此范例就是示范根据网络数据集如何进行共同节点的上游以及下游追踪分析。
  • ,最初网络中所有节点都被标记为无标签(unlabeled)和未访问(unvisted) (2)随机选择一个未被访问的节点p,使用公式(4)计算 ϵ p \epsilon_{p} (3)若 ϵ p > 0 \epsilon_{p}>0 ,计算 N p N_{p} . (4)若p是核心...
  • 节点类型

    千次阅读 2018-09-27 15:40:17
    然而,在某些情况下,比如网络通信出现问题、主节点因为负载过大停止响应等等,就会导致重新选举主节点,此时可能会出现集群中有多个主节点的现象,即节点对集群状态的认知不一致,称之为 脑裂现象 。为了尽量避免此...
  • 路由追踪的实现

    千次阅读 2017-08-10 15:24:10
    今天小编将给大家分享我在东北大学上研究生的时候学到的关于路由追踪的实现,希望大家看完小编的这篇博文后能够对windows 下的tracert命令有一定的了解。
  • 在安装好ROS后,接着学习如何创建节点节点... 节点是连接ROS网络等可执行文件,是实现某些功能的软件包,也是一个主要计算执行的进程。  一、创建工作空间  创建新文件夹,名字自定义,路径也根据自己...
  • 不适用于只有两个节点的集群以及对等集群,因为会关闭所有节点,只有等网络恢复后才会启动所有节点以求从网络分区中恢复 pause-if-all-down模式 目标节点与所配置的列表中的任何节点不能交互时才会关闭 {...
  • linux下追踪软件执行过程之cflow

    千次阅读 2015-09-14 20:16:42
    最近因为做关于复杂网络节点的实验 其中需要用到一些软件的数据 就研究了一下虚拟机追踪软件的过程。 我用的是VMware Utbant 软件以cflow-1.1为例 进行一下总结 1 在电脑上装虚拟机VMware 虚拟机里装Linux...
  • 这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本文将为你揭晓答案。 分布式追踪系统的原理及...
  • DDoS攻击追踪

    千次阅读 2012-03-06 00:05:54
    DDoS攻击追踪  分布式拒绝服务攻击(DDoS)是因特网上的一个严重的威胁。然而,Internet路由机制的无记忆功能使得它难以追溯这些攻击的来源。因此,至今没有有效的方法来处理这个问题。...泛使用的网络协议
  • 路由追踪

    2014-04-03 15:31:05
    为什么需要路由追踪?因为
  • 比特币国内全节点IP

    千次阅读 2018-08-23 18:24:06
    以上节点含有完整的区块数据。 参考: 最新国内全节点IP数据
  • 比特币网络是一个P2P的网络网络中不同节点互为对等关系,每个节点可能具有不同的功能。一共分为四个部分:节点路由、区块链数据库、挖矿、钱包服务。 四个功能:节点路由、区块链数据库、挖矿、钱包服务 节点...
  • 比特币网络

    万次阅读 2019-04-18 09:33:28
    P2P网络架构 ...每个网络节点以“扁平(flat)”的拓扑结构相互连通。在P2P网络中不存在任何服务端(server)、中央化的服务、以及层级结构。P2P网络的节点之间交互运作、协同处理:每个节点在对外提供服...
  • 一种高效自然光供电的6LoWPAN无线传感节点     摘要:本文设计了一种...通过实验得出,即使在阴天的条件下能量转换效率也能达到80%以上,同时在实验中测得采用星型网络以休眠唤醒的方式工作,节点能够长期的工作永
  • 路由追踪——traceroute与tracert

    千次阅读 2019-03-13 21:42:18
    一、路由追踪  (一)路由跟踪,就是获取从主机A到达目标主机B这个过程中所有需要经过的路由设备的转发接口IP。 (二)ICMP协议  Internet控制报文协议(internet control message protocol),它是TCP/IP协议族的...
  • 本节主要阐述比特币节点接入比特币网络的过程和节点间通信的过程。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,142
精华内容 12,856
关键字:

网络节点追踪