Deep learning achieves remarkable performance on pattern recognition, but can be vulnerable to defects of some important properties such as robustness and security. This tutorial is based on a stream of research conducted since the summer of 2018 at a few UK universities, including the University of Liverpool, University of Oxford, Queen's University Belfast, University of Lancaster, University of Loughborough, and University of Exeter. The research aims to adapt software engineering methods, in particular software testing methods, to work with machine learning models. Software testing techniques have been successful in identifying software bugs, and helping software developers in validating the software they design and implement. It is for this reason that a few software testing techniques -- such as the MC/DC coverage metric -- have been mandated in industrial standards for safety critical systems, including the ISO26262 for automotive systems and the RTCA DO-178B/C for avionics systems. However, these techniques cannot be directly applied to machine learning models, because the latter are drastically different from traditional software, and their design follows a completely different development life-cycle. As the outcome of this thread of research, the team has developed a series of methods that adapt the software testing techniques to work with a few classes of machine learning models. The latter notably include convolutional neural networks, recurrent neural networks, and random forest. The tools developed from this research are now collected, and publicly released, in a GitHub repository: \url{https://github.com/TrustAI/DeepConcolic}, with the BSD 3-Clause licence. This tutorial is to go through the major functionalities of the tools with a few running examples, to exhibit how the developed techniques work, what the results are, and how to interpret them.
翻译:深层次的学习在模式识别方面取得了显著的成绩,但可能容易受到某些重要属性(如稳健和安全)的缺陷的损害。这种辅导是根据2018年夏天以来在联合王国一些大学,包括利物浦大学、牛津大学、贝尔法斯特皇后大学、兰开斯特尔大学、洛夫堡大学和埃克特尔大学等几所大学进行的一系列研究。研究的目的是将软件工程方法,特别是软件测试方法,与机器学习模型相配合。软件测试技术成功地识别了软件错误,并帮助软件开发者验证了它们设计和实施的软件。正是因为这个原因,一些软件测试技术 -- -- 如MC/DC覆盖度标准 -- -- 已被授权用于安全关键系统的工业标准,包括汽车系统的ISO262626262, 以及航空系统RTCA D-178B/C。然而,这些技术无法直接应用于机器学习模型,因为后者与传统软件有很大差异,而且它们的设计遵循完全不同的发展生命周期。由于这一研究的轨迹是这个核心技术,因此,该团队已经开发了一个用于不断学习的实验室系列。