神经网络:线性回归

智能系统课程关于神经网络的第一部分,讲解了权重优化问题,介绍了线性函数的闭式解和梯度下降法。

线性回归模型

对于线性函数

f_{w_0, w_1}(x) = w_1x + w_0 = y

确定w_0w_1,使得f_{w_0, w_1}(x)更好地拟合已有的数据。

损失函数(Loss Function)

损失函数可以采用和方差或均方差的形式,教授在课件中使用的是和方差形式,在代码中用了均方差。

和方差:

Loss(f_w) = \sum\limits_{i = 1}^N (y_i - f_w(x_i))^2

均方差:

Loss(f_w) = \frac{1}{n} \sum\limits_{i = 1}^N (y_i - f_w(x_i))^2

另外通常引入常系数\frac{1}{2}来抵消求导之后的系数2,方便计算。教授在课件中使用了该常系数但代码中没有,导致代码中带有一项2.0/n。

带有系数\frac{1}{2}的和方差损失函数:

Loss(f_w) = \frac{1}{2} \sum\limits_{i = 1}^N (y_i - f_w(x_i))^2

带有系数\frac{1}{2}的均方差损失函数:

Loss(f_w) = \frac{1}{2n} \sum\limits_{i = 1}^N (y_i - f_w(x_i))^2

继续阅读“神经网络:线性回归”

人机交互:评估方法

UCD的第四个阶段,对人机交互产品进行评估。本文介绍了易用性的定义和多个评估方法。

HCI Evaluation Methods

易用性 Usability

人体工程学:(DIN EN ISO 6385)

  • 人与系统中其他元素的相互作用
  • 将职业、理论、原则、数据和方法应用于工作系统的设计
  • 目的是优化人们的幸福感(Wohlbefinden)和系统的性能

研究内容:人-机器-环境的相互关系

研究方法:对人的能力和行为(生理、心理)进行深入研究,把成果用于设计和改善机器和环境。

研究目的:是机器和环境适应人的需要,这些需要包括:提高工作和生产效率、保障人的健康、安全和舒适。

易用性:(ISO 9241)
易用性是指用户在特定环境中使用系统,以有效、高效和令人满意地实现特定目标的程度。

评估可以通过以下标准进行区分:

  • 形成性(在设计过程中进行评估)
  • 总结性(在设计完成后)

易用性工程

  • 分析阶段:工作分析、过程分析和系统分析;调查用户需求
  • 概念阶段:工作设计和过程定义;决定系统功能;概念的创建(高保真/低保真模型 mock-ups
  • 开发阶段:原型开发;系统集成
  • 引入阶段:试点使用(Piloteinsatz);总体引入

参与方法

  • 谁:具有应用领域知识的用户或用户代表
  • 如何:
    • 被动合作(Passive Mitwirkung):开发者自行考虑
    • 主动合作(Aktive Mitwirkung):与负责人一起做出决定
    • 主动参与(Aktive Partizipation):用户可以直接设计(通过研讨会)
  • 什么时候:只在某个固定的时间点,或长期在核心团队中
  • 参与什么:定义、功能设计、工作领域设计

用户的评估

  • 评估结果决定了软件开发的质量。
  • 人们提出非功能性需求。
  • 用户的分组通常是不同质的:有系统经验的人、有计算机知识的人、有相关任务领域的经验的人
  • 其他区别:
    • 用户根据系统变化
    • 有时甚至在测试过程中发生变化(学习)
    • 较大的变化范围
    • 很难预测一个模型(Fitts’ Law例外)

继续阅读“人机交互:评估方法”

人机交互:Introduction

人机交互引入课。介绍了人机交互的基本概念,研究对象;以用户为中心的设计及其四个阶段的主要方法。

HCI Introduction

什么是Human Computer Interaction

"HCI is a discipline concerned with Design, Evaluation and Implementation of interactive computing system for human use and study of major phenomena surrounding them."

设计、评估以及实现人们使用的交互式计算系统,研究相关的主要现象。

HCI研究:

  1. 计算机的上下文 Context of computer
  2. 人类的能力
  3. 开发过程
  4. 接口的架构

用户界面(Common UI Observations):

  • 在新应用的开发中约占50%(设计、用户分析、可用性分析的开销)
  • 对于产品的接受度很重要
  • 要求:用于友好(允许存在一定的错误,因为用户友好和美观更重要),有吸引力(可能不够高效)
  • 在可移植性上没有统一的标准或缺陷(未解决)
  • 技术基础比开发工具发展得更快
  • 用户和编程层面的间隙越来越大

计算机的上下文

  • 一个新的系统设计必须支持和扩展用户的工作方式,因此设计者必须熟悉工作方式。

  • 好的设计促进伙伴关系和用户参与,因此设计者不能只观察,还要提出问题、翻译用户的行为、理解其动机。

  • 好的设计基于关联(Kohärenz),因此涉及到系统的功能、结构、布局和流。

  • 人们是他们所从事领域的专家但是不能很好地用语言表达,因此设计者必须到现场进行采访。

  • 设计基于显示的表示,因此设计者应使用记号或模型。

继续阅读“人机交互:Introduction”

Authentication 身份认证:Admission and Access Control

认证:准入与访问控制

Admission Control 准入控制:只与授权的对象通信

Access Control 访问控制:只能在授权的对象上执行操作

密码散列函数(Cryptographic Hash Function/哈希函数)

单向函数

对于单向函数f:

  • 计算f(x) = y很容易
  • 而计算f^{-1}(y) = x很难

密码散列函数是单向函数。

密码散列函数的属性

碰撞抗性 Collision resistance

很难找到一对x和y,使得h(y) = h(x)y \not = x

即无法从计算角度找到任何两个哈希值都相同的独特输入。

原像抗性 Preimage resistance

在集合论中,给定一个从集合X到集合Y的映射,x属于定义域X,y属于值域Y:

  • x在该映射下有f(x)=y,则y称为x在该映射下的像
  • x称为y的原像

此处原像指散列函数的输入。

因此原像抗性指:给定散列函数的输出y,从计算角度无法找到符合该输出的输入值x,即无法计算f^{-1}(y) = x

第二原像抗性/弱碰撞抗性 Second-preimage resistance/Weak collision resistance

第二原像指另一个输入x’,使h(x') = h(x),且x' \not = x

因此第二原像抗性(或称之为弱碰撞抗性)指:给定x和散列函数h,从计算角度无法找到任何与x有着相同输出的二次输入值x’。

继续阅读“Authentication 身份认证:Admission and Access Control”

[2021] Album of the Year

今年Facebook使用很频繁,混迹于几个极端金属和氛围黑后黑的小组,学会了一个新词儿——AOTY,也就是Album of the Year。以前每年虾米音乐都会给推送一个个人总结,截图发朋友圈/微博,再补充自己觉得一年里听到最好的专辑。今年换了Spotify,搭了博客,所以认真写一篇我的AOTY和一些想法。

希望不是这样的↑

继续阅读“[2021] Album of the Year”

信息安全基础

本文介绍了保护目标、攻击者模型以及保护方法中非密码学部分的基础知识。

学习目标

  • 诚实以及现实的自我评估

  • 对其他人、公司、组织等的评估

  • 收集信息安全和数据保护需求的能力

    • 保护目标
    • 攻击者模型与信任模型
  • Validation & Verification,及实际和理论限制

    Validation指是否满足需求,Verification指是否符合规范

    "Validation. The assurance that a product, service, or system meets the needs of the customer and other identified stakeholders. It often involves acceptance and suitability with external customers. Contrast with verification."
    "Verification. The evaluation of whether or not a product, service, or system complies with a regulation, requirement, specification, or imposed condition. It is often an internal process. Contrast with validation."

  • 信息安全和数据保护机制(理解并开发)

继续阅读“信息安全基础”

Paxos 协议(Paxos Protocol)

即使无法解决分布式系统异步通信中的共识问题,放弃Termination属性后我们仍可以找到实用的解决方案(Practical Solution),Paxos就是其中之一。

系统模型

  • 进程间通过消息通信
  • 消息是异步的:不限制传输延迟,但是在正确的进程间消息最终总能送达
  • 进程可以重启并恢复状态(restart and remember)

角色

Paxos协议中进程有三种基本的角色:

  1. Proposers 提议者
    提出一个想要达成共识的数值
  2. Acceptors 接收者
    选择达成共识的数值
  3. Learners 学习者
    学习Proposers与Acceptors已达成共识的数值

一个进程可以承担多个角色。

继续阅读“Paxos 协议(Paxos Protocol)”

Consensus Problem 共识问题

系统工程课上教授讲解了Consensus问题,以及两种解决方法。本文主要介绍什么是Consensus,以及在分布式系统异步通信中的问题。

共识问题

Consensus Problem翻译为共识问题,指多个实体在某事上达成一致的过程,具体表现为所有进程决定同一个值。
Consensus is to have several different entities to agree on something.
All processes agree on a common value.

共识的应用诸如:

  • What transactions to commit to a database in which order
  • State machine replication (每个副本执行相同的客户请求集合,并且以等价的顺序处理请求,以保证副本产生相同的输出)
  • Atomic broadcast
  • Leader election
  • Mutual exclusion

与Consistency一致性的区别在于:一致性强调同一个数据的多个副本保持对外呈现状态的一致性。如当修改一个副本的数据时,其他副本如何获取到该修改。包括严格一致性、强一致性(顺序一致性、线性一致性)、弱一致性(最终一致性)等。共识问题强调达成一致性的过程

“一致性描述的是结果状态,共识则是一种手段。达成某种共识并不意味着就保障了一致性(这里的一致性指强一致性)。只能说共识机制,能够实现某种程度上的一致性。”分布式系统的一致性与共识性

继续阅读“Consensus Problem 共识问题”

把鸡蛋放在通了电的篮子里——NAS折腾 vol.1

很久之前就想拥有一台NAS,把家里人所有的照片都存进去,这样父母和我自己就不用再考虑手机存储空间不够用的问题了。但是国内运营商很早就不再给分配外网IP地址,做内网穿透又比较麻烦;加之考虑数据安全问题,多盘位组RAID必不可少,而多盘位的机器又比较贵,搞不明白NAS是什么东西的父母没有给批预算;家里放一台UPS的安全问题也需要考虑。总之种种原因下一直没有实践过。

临近回德国之前突然想起来德国这边的运营商应该给了外网IP,所以决定弄一台小猫盘带来试一试。从淘宝上购买了洗白群晖的机器,带电源,成色也很新(嗯,再新也是电子垃圾),关键是价格只要138。这两天收拾完行李就拿出来玩,群晖的系统上手非常快,孩子很满意。

继续阅读“把鸡蛋放在通了电的篮子里——NAS折腾 vol.1”