Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Deep Learning with IBM Watson S...

Introduction to Deep Learning with IBM Watson Studio

This talk covers some basics of neural networks, discussion of convolutional neural networks for image data, some reference to recurrent neural networks, and discussion of various IBM open source tools for deep learning, model deployment, and related topics.

Avatar for dpnichols

dpnichols

June 04, 2019

Other Decks in Technology

Transcript

  1. Introduction to Deep Learning with Watson Studio — Svetlana Levitan,

    PhD, and David Nichols, PhD Developer Advocate and Data Scientist IBM Cloud and Cognitive Software June 4, 2019
  2. 1500 Drones Are Ready To Fly 2 IBM Developer Drone

    Challenge Challenge runs from May 13 through June 16 and those 18 years of age or older residing in the US and Canada are eligible to enter Enter at https://developer.ibm.com/contest Once per week during the 5 weeks of the contest a random drawing Will be held to determine the winners (watch for the drawing on Twitch) Winners will receive a DJI Tello programmable drone, an IBM Developer T-shirt, and an IBM Developer laptop sticker #IBMDroneDrop
  3. IBM and open source Intro to neural networks PMML and

    ONNX for model deployment Deep Learning: CNN and RNN, MAX AIFairness360 and ART Links and resources Cloud and Cognitive Applications/ May 17-18, 2019 / © 2019 IBM Corporation 4 Contents
  4. Center for Open Source Data and AI Technologies CODAIT codait.org

    codait (French) = coder/coded https://m.interglot.com/fr/en/codait CODAIT aims to make AI solutions dramatically easier to create, deploy, and manage in the enterprise Relaunch of the Spark Technology Center (STC) to reflect expanded mission 6
  5. Typical Stages in Machine Learning 7 7 Collect Data Analyze

    and Clean Data Transform data Build a Model Deploy the model Monitor and update as needed (C) 2018 IBM Corp CODAIT/Cognitive Applications/ May 17-18, 2019 / © 2019 IBM Corporation
  6. Data Sources CODAIT/Cognitive Applications/ May 6, 2019 / © 2019

    IBM Corporation 8 Relational Databases Data warehouses, data lakes Web logs Medical or business records Streaming data IOT data – sensors, cameras, etc. Images, sounds, video, …
  7. Some typical data transformations CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 9 One Hot Encoding: categorical field into K dummy variables Image from Kaggle.com
  8. Standardizing or normalizing continuous fields CODAIT/Cognitive Applications/ May 6, 2019

    / © 2019 IBM Corporation 10 All continuous inputs and outputs of a NN should be rescaled Normalize: rescale the values into a range of [0,1] Standardize: rescale data to have mean=0 and std.dev.= 1 https://365datascience.com/standardization/
  9. The Elementary Perceptron CODAIT/Cognitive Applications/ May 6, 2019 / ©

    2019 IBM Corporation 12 1958 Frank Rosenblatt A machine, first implemented in software on IBM 704, later hardware 1969 book by Minsky and papert àAI winter Then MLP = multilayer perceptron
  10. Neural network for iris flower classification CODAIT/Cognitive Applications/ May 6,

    2019 / © 2019 IBM Corporation 16 Input layer, hidden layer(s), output layer Activation function on each layer Weights on connections, biases
  11. Output … Hidden Layer 1 (256 Neurons) Hidden Layer 2

    (256 Neurons) Output Layer (10 Neurons) Input Image (28x28 pixels) Feature Vector (784 values) Input Layer (784 Inputs) … … … … Fully Connected Fully Connected Fully Connected A Simple Neural Network for Identifying Numbers Input
  12. Convolutional Neural Networks (CNNs) CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 19 Widely used in processing of visual images or pictures, “computer vision” Photo by Ramdan Authentic
  13. Convolutional Neural Networks (CNNs) CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 20 CNNs typically involve use of several types of layers: • Convolutional • Pooling • Dropout • Flattening • Dense (Fully Connected)
  14. Image representation CODAIT/Cognitive Applications/ May 6, 2019 / © 2019

    IBM Corporation 21 • An image is represented to a program by a set of numbers • Each number represents a pixel location and a “channel” • For greyscale images, only one channel per location • For color images, typically three channels per location (RGB)
  15. Image representation CODAIT/Cognitive Applications/ May 6, 2019 / © 2019

    IBM Corporation 22 Here’s the 28 x 28 set of numbers for the digit 7 from earlier:
  16. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 23 Convolutional layers detect features in images by passing filters or kernels over pixel locations and combining information Filters or kernels are usually square, often of size 3 x 3, possibly larger for larger images, and occasionally 1 x 1 (useful only if there are multiple channels in the input)
  17. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 24 Aside from size, important basic aspects of filter or kernel usage include: • Padding • Stride • Depth, or the number of filters or kernels
  18. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 25 Images on the following four slides are from Stanford University’s CS231n Convolutional Networks for Visual Recognition course notes, and are subject to: The MIT License (MIT) Copyright © 2015 Andrej Karpathy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
  19. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 29 Because we had nine applications or multiplications of the kernel with the input, the output has nine values, arranged in the corresponding 3x3 pattern: In this example there were actually two filters or kernels, which is why the output volume is listed as 3 x 3 x 2.
  20. Convolutional filters or kernels - Activations CODAIT/Cognitive Applications/ May 6,

    2019 / © 2019 IBM Corporation 30 The values created by multiplying the filter or kernel weights by the input values are then transformed via activation functions • Rectified Linear Units (ReLU) seem to be the activation functions of choice for convolutional layers • Hyperbolic Tangent or Sigmoid activation might be used at the end of the network with a continuous outcome prediction • Softmax activation is typically used at the end of the network for classification problems
  21. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 31 A single convolutional layer will typically include a number of filters, usually a power of 2 (e.g., 32, 64, 128, etc.), creating multiple activation patterns per location CNNs typically involve multiple convolutional layers, and layers later in the network typically use more filters or kernels Output from hidden layers in neural networks is often referred to as activations or activation maps
  22. Convolutional Neural Networks – Pooling CODAIT/Cognitive Applications/ May 6, 2019

    / © 2019 IBM Corporation 32 In addition to convolutional layers, CNNs typically include pooling layers, which reduce activation map sizes and serve a regularization function Most common form of pooling is probably using a 2 x 2 filter with strides (2,2) and taking the maximum of the four values as the new single value This reduces the size of the activation map by 75% and helps reduce overfitting
  23. Convolutional Neural Networks – Dense Layers, Flattening, and Dropout CODAIT/Cognitive

    Applications/ May 6, 2019 / © 2019 IBM Corporation 33 Convolutional layers are also generally connected to dense or fully-connected layers at the end of the network in order to create predictions or classifications Flattening layers transform activation maps into one-dimensional vectors for connection to subsequent layers Dropout (effectively randomly setting some nodes to 0s) often precedes dense layers to prevent overfitting
  24. Building neural network in SKLearn CODAIT/Cognitive Applications/ May 6, 2019

    / © 2019 IBM Corporation 34 from sklearn.preprocessing import StandardScaler scaler = StandardScaler() # Fit only to the training data scaler.fit(X_train) # Now apply the transformations to the data: X_train = scaler.transform(X_train) X_test = scaler.transform(X_test) from sklearn.neural_network import MLPClassifier mlp = MLPClassifier(hidden_layer_sizes=(13,13,13),max_iter=500) mlp.fit(X_train,y_train) predictions = mlp.predict(X_test) from sklearn.metrics import classification_report,confusion_matrix print(confusion_matrix(y_test,predictions))
  25. Model deployment CODAIT/Cognitive Applications/ May 17-18, 2019 / © 2019

    IBM Corporation 36 Challenges: o Different Teams o Different environments o Need to keep data prep steps Solutions: open standards PMML: Predictive Model Markup Language – XML based, >20 years PFA: Portable Format for Analytics, JSON based, ~5 years ONNX: Open Neural Network eXchange, Protobuf, < 2 years Or Docker containers
  26. What is PMML? CODAIT/Cognitive Applications/ May 17-18, 2019 / ©

    2019 IBM Corporation 37 XML for model exchange and deployment PMML 0.7 in 1997, 1.1 in 2000, 4.3 in 2016, 4.4 soon Used by >30 companies and OS packages Dmg.org/pmml
  27. PMML 4.3 Models: 16 Models + transformations + ensembles Association

    Rules Model Clustering Model General Regression Naïve Bayes Nearest Neighbor Model Neural Network Regression Tree Model Mining Model: composition or ensemble (or both) of models Baseline Model Bayesian Network Gaussian Process Ruleset Scorecard Sequence Model Support Vector Machine Time Series
  28. PMML Powered From http://dmg.org/pmml/pr oducts.html: Alpine Data Angoss BigML Equifax

    Experian FICO Fiserv Frontline Solvers GDS Link IBM (Includes SPSS) JPMML KNIME KXEN Liga Data Microsoft MicroStrategy NG Data Open Data Opera Pega Pervasive Data Rush Predixion Software Rapid I R Salford Systems (Minitab) SAND SAS Software AG (incl. Zementis) Spark Sparkling Logic Teradata TIBCO WEKA
  29. PMML in Python JPMML package is created and maintained by

    Villu Ruusmann. From https://stackoverflow.com/questions/33221331/export-python-scikit-learn-models-into-pmml pip install git+https://github.com/jpmml/sklearn2pmml.git Example of how to export a classifier tree to PMML. First grow the tree: # example tree & viz from http://scikit-learn.org/stable/modules/tree.html from sklearn import datasets, tree iris = datasets.load_iris() clf = tree.DecisionTreeClassifier() clf = clf.fit(iris.data, iris.target) SkLearn2PMML conversion takes 2 arguments: an estimator (our clf) and a mapper for preprocessing. Our mapper is pretty basic, since no transformations. from sklearn_pandas import DataFrameMapper default_mapper = DataFrameMapper([(i, None) for i in iris.feature_names + ['Species']]) from sklearn2pmml import sklearn2pmml sklearn2pmml(estimator=clf, mapper=default_mapper, pmml=“IrisClassificationTree.pmml")
  30. PMML in R R is a programming language and software

    environment for statistical computing and graphics supported by the R Foundation for Statistical Computing. R packages “pmml” and “pmmlTransformations” https://cran.r-project.org/package=pmml Depend on XML package Supports a number of R models: ada, amap, arules, gbm, glmnet, neighbr, nnet, rpart, randomForest, kernlab, e1071, testthat, survival, xgboost, knitr, rmarkdown Maintained by Dmitriy Bolotov and Tridivesh Jena from Software AG JPMML also has a package that augments “pmml” and provides PMML export for additional R models
  31. Create PMML in R (using R Studio) >library(XML); >library(pmml); >

    data(iris); Build and save a linear regression model predicting Sepal length: > irisLR<-lm(Sepal.Length~.,iris) >saveXML( pmml(irisLR), "IrisLR.xml" ) Build and save a decision tree (C&RT) model predicting Species class: > irisTree <- rpart( Species~., iris ) > saveXML( pmml( irisTree ), "IrisTree.xml" )
  32. ONNX: Open Neural Network eXchange CODAIT/Cognitive Applications/ May 17-18, 2019

    / © 2019 IBM Corporation 45 Since 2017 Protobuf Covers DL and traditional ML Active work by many companies
  33. Convolutional Neural Networks (CNNs) CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 47 Widely used in processing of visual images or pictures, “computer vision” Photo by Ramdan Authentic
  34. Convolutional Neural Networks (CNNs) CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 48 CNNs typically involve use of several types of layers: • Convolutional • Pooling • Dropout • Flattening • Dense (Fully Connected)
  35. Image representation CODAIT/Cognitive Applications/ May 6, 2019 / © 2019

    IBM Corporation 49 • An image is represented to a program by a set of numbers • Each number represents a pixel location and a “channel” • For greyscale images, only one channel per location • For color images, typically three channels per location (RGB)
  36. Image representation CODAIT/Cognitive Applications/ May 6, 2019 / © 2019

    IBM Corporation 50 Here’s the 28 x 28 set of numbers for the digit 7 from earlier:
  37. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 51 Convolutional layers detect features in images by passing filters or kernels over pixel locations and combining information Filters or kernels are usually square, often of size 3 x 3, possibly larger for larger images, and occasionally 1 x 1 (useful only if there are multiple channels in the input)
  38. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 52 Aside from size, important basic aspects of filter or kernel usage include: • Padding • Stride • Depth, or the number of filters or kernels
  39. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 53 Images on the following four slides are from Stanford University’s CS231n Convolutional Networks for Visual Recognition course notes, and are subject to: The MIT License (MIT) Copyright © 2015 Andrej Karpathy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
  40. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 57 Because we had nine applications or multiplications of the kernel with the input, the output has nine values, arranged in the corresponding 3x3 pattern: In this example there were actually two filters or kernels, which is why the output volume is listed as 3 x 3 x 2.
  41. Convolutional filters or kernels - Activations CODAIT/Cognitive Applications/ May 6,

    2019 / © 2019 IBM Corporation 58 The values created by multiplying the filter or kernel weights by the input values are then transformed via activation functions • Rectified Linear Units (ReLU) seem to be the activation functions of choice for convolutional layers • Hyperbolic Tangent or Sigmoid activation might be used at the end of the network with a continuous outcome prediction • Softmax activation is typically used at the end of the network for classification problems
  42. Convolutional filters or kernels CODAIT/Cognitive Applications/ May 6, 2019 /

    © 2019 IBM Corporation 59 A single convolutional layer will typically include a number of filters, usually a power of 2 (e.g., 32, 64, 128, etc.), creating multiple activation patterns per location CNNs typically involve multiple convolutional layers, and layers later in the network typically use more filters or kernels Output from hidden layers in neural networks is often referred to as activations or activation maps
  43. Convolutional Neural Networks – Pooling CODAIT/Cognitive Applications/ May 6, 2019

    / © 2019 IBM Corporation 60 In addition to convolutional layers, CNNs typically include pooling layers, which reduce activation map sizes and serve a regularization function Most common form of pooling is probably using a 2 x 2 filter with strides (2,2) and taking the maximum of the four values as the new single value This reduces the size of the activation map by 75% and helps reduce overfitting
  44. Convolutional Neural Networks – Dense Layers, Flattening, and Dropout CODAIT/Cognitive

    Applications/ May 6, 2019 / © 2019 IBM Corporation 61 Convolutional layers are also generally connected to dense or fully-connected layers at the end of the network in order to create predictions or classifications Flattening layers transform activation maps into one-dimensional vectors for connection to subsequent layers Dropout (effectively randomly setting some nodes to 0s) often precedes dense layers to prevent overfitting
  45. Recurrent Neural Networks: LSTM and GRU 64 Wang, Ri &

    Panju, Maysum & Gohari, Mahmood. (2017). Classification-based RNN machine translation using GRUs.
  46. 65 Dense Time Distributed Layer (100 x 7 Neurons) LSTM

    Encoder (200 LSTM Neuronvalues) … Fully Connected … … … … … LSTM repeat call t=7 … … … … … … … … … … … … Feature Vector (8 values, 14 timesteps) t t LSTM Decoder (200 LSTM t LSTM Encoder-Decoder: Multivariate Time Series Modified from https://machinelea rningmastery.com/ how-to-develop- lstm-models-for- multi-step-time- series-forecasting- of-household- power- consumption/
  47. The R API to Keras & TensorFlow, and Conversion to

    ONNX format CODAIT/Cognitive Applications/ May 17-18, 2019 / © 2019 IBM Corporation 66
  48. CODAIT/Cognitive Applications/ May 17-18, 2019 / © 2019 IBM Corporation

    67 Time Segments are treated as a vector of inputs. A Non Recurrent Neural Network for Time Series Prediction https://github.com/jjallaire/deep-learning-with-r-notebooks/blob/master/notebooks/6.2-understanding- recurrent-neural-networks.Rmd Time Series Examples from Deep Learning With R Francois Chollet JJ Allaire
  49. Reducing Overfitting CODAIT/Cognitive Applications/ May 17-18, 2019 / © 2019

    IBM Corporation 69 The addition of dropouts is a common regularization approach. Since RNN neurons can be called multiple times, another type of “recurrent dropout” can be incorporated. More parameters remediates overfitting? For Neural Networks, yes!
  50. Saving The Model: The Keras Model in JSON format CODAIT/Cognitive

    Applications/ May 17-18, 2019 / © 2019 IBM Corporation 70 The Keras Model in JSON format: Unsupported Operations can be manually removed in some cases The model can be saved in hdf5 or JSON format. JSON is recommended. Weights must be saved separately. ONNX format is one “frozen graph”, and will require both files
  51. Loading ONNX model: Python API CODAIT/Cognitive Applications/ May 17-18, 2019

    / © 2019 IBM Corporation 72 An R library exists, but does not seem to work for these models.
  52. AIFairness 360 CODAIT/Cognitive Applications/ May 17-18, 2019 / © 2019

    IBM Corporation 75 70+ Fairness metrics and explanations 10 Bias mitigation algorithms
  53. AIFairness 360: Some Metrics (out of 70+) CODAIT/Cognitive Applications/ May

    17-18, 2019 / © 2019 IBM Corporation 76 Statistical parity difference Equal opportunity difference Average odds difference Disparate impact Theil index Euclidean distance Mahalanobis distance Manhattan distance
  54. De-biasing algorithms Optimized Preprocessing Reweighing Adversarial Debiasing Reject Option Classification

    Disparate Impact Remover Learning Fair Repressentations Prejudice Remover Calibrated Equalized Odds Post-processing Equalized Odds Post-processing Meta Fair Classifier
  55. © 2018 IBM Corporation IBM Confidential Demo Application: AI Fairness

    360 Web Application http://aif360.mybluemix.net/
  56. AIOps Prepared and Analyzed Data Create M odel Assign Hyperparameters

    and Train M onitor Validate and Deploy Trained Model Deployed Model Now let`s talk about Robustness Prepared and Analyzed Data Initial Model Deployed Model Is the model vulnerable to adversarial attacks? Is the dataset poisoned?
  57. Deep learning and adversarial attacks 83 Deep Learning models are

    now used in many areas Can we trust them?
  58. Data Attacker Neural Network poison train input perturb output result

    $$$ benefit Adversarial Threats to AI Evasion attacks § Performed at test time § Perturb inputs with crafted noise § Model fails to predict correctly § Undetectable by humans Poisoning attacks § Performed at training time § Insert poisoned sample in training data § Use backdoor later
  59. Robustness Metrics Detection Model Hardening Static Data Preprocessing Model Design

    Statistical Tests Detector Networks Bayesian Uncertainty Attack Independent Attack Specific Adversarial Training Dynamic Gaussian Data Augmentation Feature Squeezing Label Smoothing Shattered Gradients Stochastic Gradients Saddlepoint Optimization Dimensionality Reduction BReLUs CLEVER Global Lipschitz Bound Loss Sensitivity Minimal Perturbation Adversarial Success Rates MMD Kernel Density Estimates Local Intrinsic Dimensionality Magnet Detectors on Inputs Detectors on Internal Representations Dropout Uncertainty Bayesian SVMs How to defend? Taxonomy of defenses
  60. IBM Adversarial Robustness Toolbox ART ART is a library dedicated

    to adversarial machine learning. Its purpose is to allow rapid crafting and analysis of attack and defense methods for machine learning models. The Adversarial Robustness Toolbox provides an implementation for many state-of-the-art methods for attacking and defending classifiers. 88 https://github.com/IBM/adversarial-robustness- toolbox The Adversarial Robustness Toolbox contains implementations of the following attacks: Deep Fool (Moosavi-Dezfooli et al., 2015) Fast Gradient Method (Goodfellow et al., 2014) Jacobian Saliency Map (Papernot et al., 2016) Universal Perturbation (Moosavi-Dezfooli et al., 2016) Virtual Adversarial Method (Moosavi-Dezfooli et al., 2015) C&W Attack (Carlini and Wagner, 2016) NewtonFool (Jang et al., 2017) The following defense methods are also supported: Feature squeezing (Xu et al., 2017) Spatial smoothing (Xu et al., 2017) Label smoothing (Warde-Farley and Goodfellow, 2016) Adversarial training (Szegedy et al., 2013) Virtual adversarial training (Miyato et al., 2017)
  61. The Adversarial Robustness Toolbox (ART) 89 • Library for adversarial

    machine learning • Baseline implementation of attacks and defenses for classifiers • Dedicated to images • Python 2 & 3 • MIT license • Supported frameworks: Load classifier model (Keras, TF, PyTorch etc) Perform attack Load ART modules Evaluate robustness
  62. The Adversarial Robustness Toolbox (ART) 90 • Library for adversarial

    machine learning • Baseline implementation of attacks and defenses for classifiers • Dedicated to images • Python 2 & 3 • MIT license • Supported frameworks:
  63. Adversarial Robustness Toolbox (ART) Poisoning detection • Detection based on

    clustering activations • Proof of attack strategy Evasion detection • Detector based on inputs • Detector based on activations Robustness metrics • CLEVER • Empirical robustness • Loss sensitivity Unified model API • Training • Prediction • Access to loss and prediction gradients Evasion defenses • Feature squeezing • Spatial smoothing • Label smoothing • Adversarial training • Virtual adversarial training • Thermometer encoding • Gaussian augmentation • Total variance minimization Evasion attacks • FGSM • JSMA • BIM • PGD • Carlini & Wagner • DeepFool • NewtonFool • Elastic net attack • Universal perturbation • Spatial transformations 91
  64. MAX: Reduces “time to value” for developers 93 Find model

    asset Deploy pre- trained model asset Use model asset ibm.biz/model-exchange May, 2019 / © 2019 IBM Corporation • Audio classification • Image classification • Text classification • Object detection • Facial recognition • Image-to-image translation • Image-to-text translation • Named entity recognition • Text feature extraction • …
  65. 94 Consumption scenarios - Model-serving microservice (Docker-based) - Internet of

    Things: Node-RED - JavaScript/Node.js packages May, 2019 / © 2019 IBM Corporation
  66. Conclusions CODAIT/Cognitive Applications/ May 17-18, 2019 / © 2019 IBM

    Corporation 95 Deep neural networks are used widely IBM Watson Studio provides various tools for model building, deployment, monitoring, as well as detection and remediation of bias and adversarial attacks MAX models are ready to use in a variety of applications
  67. Learn more on deep learning, ONNX CODAIT/Cognitive Applications/ May 17-18,

    2019 / © 2019 IBM Corporation 96 Watson Studio: sign up for IBM Cloud: https://ibm.biz/Bdz4N5 Codait.org Onnx.ai @SvetaLevitan @dpnichols Call for Code: http://callforcode.org Drone drop (by June 16): https://developer.ibm.com/contest AIFairness 360: https://github.com/IBM/AIF360 ART: https://github.com/IBM/adversarial-robustness-toolbox MAX: ibm.biz/model-exchange