wikillm

Paper · 2018-08-13 · cs.LG, stat.ML

Explaining the Unique Nature of Individual Gait Patterns with Deep Learning

Trains linear, MLP and CNN classifiers to recognise 57 people from walking trials (ground reaction forces and joint angles), then uses Layer-wise Relevance Propagation to show which time windows and variables drive each identity. Author-reported: the linear SVM is near 100% on every feature set; deeper CNNs are more robust to noise and give more stable relevance. Pre-print.

Feature attributionTime series classificationConvolutional neural networkMulti-layer perceptron (MLP)gait-analysisbiomechanicslayer-wise-relevance-propagationinterpretabilitysubject-identification

arXivPDFMarkdown19 min read

AI-compiled by claude-haiku-5-5 on 2026-11-06, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

The paper asks whether a person's walk is distinctive enough to pick that person out of a group, and whether a neural network can show why it picked someone. Fifty-seven healthy adults each walked 20 times over a force plate while their joint angles and foot forces were recorded. Each walk was turned into a fixed-size table of numbers over one stride.

Simple linear classifiers, small and large fully connected networks, and convolutional networks were trained to name the walker. Most of them were almost always right. The authors then used a method called Layer-wise Relevance Propagation to trace each prediction backwards and mark which moments in the stride and which measurements pushed the answer toward the right person. The authors also tested how well each model held up when the input was corrupted with noise, and how stable the marks were from trial to trial. Deeper convolutional networks did best on both counts.

TL;DR

  • Subject identification (57 classes) from one stride per trial. Inputs are ground reaction forces (GRF) and joint angles, each as a channels-by-101 time-normalised array.
  • Models: a linear SGD classifier, a linear SVM, fully connected networks (MLP) and several CNN variants. Ten-fold cross-validation.
  • Explanation: LRP attributes each prediction to input values over time, for the true class only.
  • Author-reported: the linear SVM is at 99.7 to 100.0% on all five feature sets. Most networks are above 95% on GRF and on the full-body and lower-body joint-angle sets. Small MLPs are weakest on the sagittal-only sets (LBJAX: 55.6% for MLP (2, 64)). Linear SGD is the least robust to noise and the least stable in relevance.
  • Only one session of 57 subjects, with the same 20 trials per subject spread across training and test splits. Generalisation to other sessions or to patients is not tested.

Problem

Gait analysis usually reduces time-continuous signals to a few pre-chosen variables such as range of motion or step length, which discards information and relies on the analyst's choices § Introduction. Machine learning can use full time courses, but the models are black boxes, which hampers clinical acceptance § Introduction.

The paper's aim is threefold: show that gait patterns identify individuals with neural networks, check that the networks use meaningful gait features, and describe the features that identify a specific person § Introduction.

Variability within and between individuals is treated as an inherent feature of human motor control, so robustness and reliability are both required § Prediction Accuracy and Model Robustness.

Method

1. Data acquisition § Experimental protocol and data acquisition § Subjects and ethics statement. The sample is 57 active adults, 29 women and 28 men, with no gait disorder and no lower-limb injury. Each walked barefoot at a self-chosen pace on a 10 m path, 20 trials each, in one session with no intervention. Ten infrared cameras recorded 62 retro-reflective markers at 250 Hz fig. 5. Two force plates recorded three-dimensional ground reaction forces at 1000 Hz.

2. Stride extraction and normalisation § Data processing. One stride per trial is kept, from right-foot heel strike to left-foot toe-off, detected with a 10 N vertical force threshold. Marker trajectories are low-pass filtered at 12 Hz and forces at 50 Hz (both second-order, bidirectional Butterworth). Forces are normalised to body weight. Joint angles in the elbow, shoulder, spine, hip, knee and ankle, in the sagittal, transverse and coronal planes, are computed with Visual3D. Every channel is time-normalised to 101 points, z-transformed, and scaled to [-1, 1]. Kinematic channels are z-transformed per trial; kinetic channels across all trials.

3. Input vectors § Neural Network Architectures. Each sample is a channels x time array with C channels and T = 101 points. Five feature sets are used:

Feature setChannels CInput length D = C x 101
Ground reaction forces (GRF)6606 (derived)
Full-body joint angles (FBJA)333333 (derived)
Full-body joint angles, sagittal only (FBJAX)101010 (derived)
Lower-body joint angles (LBJA)181818 (derived)
Lower-body joint angles, sagittal only (LBJAX)6606 (derived)

Linear and MLP models receive the array flattened by row concatenation. CNNs use the array directly § Data Analysis.

4. Classifiers § Data Analysis tab. ST4–tab. ST9.

  • Linear (SGD): one dense layer from D to L classes, trained with SGD. No SoftMax is listed for this model tab. ST4.
  • Linear (SVM): a linear support vector classifier, C = 0.1. The paper says it used scikit-learn's multi-class linear SVC, but the exact estimator class and multi-class strategy are not named. It is not trained with SGD § Data Analysis.
  • MLP (2, H): dense D to H, ReLU, dense H to L, SoftMax. One hidden layer tab. ST4.
  • MLP (3, H): dense D to H, ReLU, dense H to H, ReLU, dense H to L, SoftMax. Two hidden layers tab. ST4.
  • H is 64, 128, 256, 512 or 1024 tab. ST1.
  • CNN-A, CNN-A3, CNN-A6, CNN-C3, CNN-C3-3 and CNN-C6: convolutional stacks with ReLU and a final dense layer to L classes with SoftMax. The layer specifications differ by feature set. See the Architectures table below.

5. Training § Data Analysis. All models except the SVM are trained as L-way classifiers with SGD on mini-batches of 5 randomly chosen training samples, for up to 30,000 iterations. The learning rate starts at 5e-3 and is lowered to 1e-3 and then 5e-4 every 10,000 iterations. Initial weights are drawn from a zero-mean normal distribution whose standard deviation is the inverse square root of each layer's fan-in (the number of inputs feeding one output unit) § Data Analysis.

Pseudocode
# Preprocess one stride  [§ Data processing]
# Input:  marker trajectories and forces for one trial
# Output: input array x, shape (C, 101), values in [-1, 1]

def preprocess(markers, forces):
    # Low-pass filter: 12 Hz for markers, 50 Hz for forces  [§ Data processing]
    markers = butterworth_bidirectional(markers, cutoff_hz=12.0)
    forces = butterworth_bidirectional(forces, cutoff_hz=50.0)
    # Forces normalised to body weight  [§ Data processing]
    forces = forces / body_weight
    # Joint angles from the filtered markers (Visual3D)  [§ Data processing]
    angles = joint_angles(markers)
    # Resample to 101 points; method not stated  [§ Data processing]
    channels = resample_to_points(concat(forces, angles), 101)
    # z-score: kinematics per trial, kinetics over all trials
    # [§ Data processing]
    # Scaling to [-1, 1]; the exact rule is not stated  [§ Data processing]
    return scale_to_unit_range(zscore(channels))
Pseudocode
# Train one classifier  [§ Data Analysis]
# Input:  train_x (N, C, 101), train_y (N,), validation split, model
# Output: trained model

def train(model, train_x, train_y, val_x, val_y):
    # Normal weights, mean 0, std = fan_in ** -0.5  [§ Data Analysis]
    initialise_weights(model)
    for step in range(30000):   # up to 3e4 iterations  [§ Data Analysis]
        # 5e-3, then 1e-3, then 5e-4, switching every 1e4 steps
        # [§ Data Analysis]
        rate = learning_rate(step)
        # Mini-batch of 5 random training samples  [§ Data Analysis]
        batch_x, batch_y = sample_batch(train_x, train_y, size=5)
        # Loss function not stated in the paper
        loss = training_loss(model(batch_x), batch_y)
        model.sgd_step(loss, rate)
        # A learning-rate stage may end early once validation converges
        # (criterion not stated)  [§ Data Analysis]
        if validation_converged(model, val_x, val_y):
            step = next_stage_start(step)
    return model

6. Cross-validation § Data Analysis. Ten-fold cross-validation with 8 parts for training, 1 for validation and 1 for testing. On average 912 samples per split are used for training (derived: 0.8 x 57 x 20 = 912). The 20 samples of each subject are spread at random over all partitions.

7. Explanation with Layer-wise Relevance Propagation § Layer-wise Relevance Propagation. For a linear model, the score of class c is f_c(x) = sum_i w_ic x_i + b_c eq. 1. Each input's term w_ic x_i is its contribution. LRP generalises this to any network. The output relevance is set to the class score, and each neuron passes its relevance to its inputs in proportion to the contribution z_ij / z_j eq. 2. Relevance arriving at an input is summed over its outputs eq. 3. The total relevance is conserved, so the input relevances add up to the score. For one linear layer, the rule reduces to R_i = x_i w_i. The paper explains predictions for the true class only fig. 1. Positive relevance supports the class, negative relevance contradicts it, and near-zero means no influence.

Pseudocode
# Explain the output for one class  [§ Layer-wise Relevance Propagation]
# Input:  layers in forward order, activations per layer, class index c
# Output: relevance of the input, shape (C, 101)

def lrp_explain(layers, activations, c):
    # Start with the class score as the output's relevance  [eq. 1]
    relevance = zeros_like(activations[-1])
    relevance[c] = activations[-1][c]
    for index in reversed(range(len(layers))):
        # Share each output's relevance among its inputs by z_ij / z_j  [eq. 2]
        # The propagation rule used in the experiments is not stated
        shares = layers[index].redistribute(relevance, activations[index])
        # Sum the shares that reach each input  [eq. 3]
        relevance = shares.sum(axis=0)
    return relevance

8. Robustness to noise § Prediction Accuracy and Model Robustness tab. 2. For each test set, a random order over the input components is drawn per input. The n-th perturbation is applied to all test samples at once, and accuracy is measured after each step. Fifty steps are run and the experiment is repeated 10 times. The area over the perturbation curve (AOPC, from § Results: Prediction Accuracy and Model Robustness) is summarised per model.

Pseudocode
# Noise robustness curve  [§ Prediction Accuracy and Model Robustness]
# Input:  model, test_x (N, C, 101), test_y (N,), noise_fn
# Output: accuracy after each of 50 perturbation steps

def robustness_curve(model, test_x, test_y, noise_fn):
    # Random order of the components, drawn for each input  [§ Prediction...]
    orders = random_orders(test_x)
    accuracies = []
    for step in range(50):   # 50 steps, repeated 10 times  [§ Prediction...]
        # Perturb the step-th component of every sample; effects accumulate
        test_x = apply_noise(test_x, orders, step, noise_fn)
        accuracies.append(accuracy(model(test_x), test_y))
    # AOPC is then computed from this curve; the exact formula is not stated
    return accuracies

9. Stability of relevance § Results: Coefficient of variation of relevance. For each subject and each input component, the 20 relevance values (one per trial) are summarised with a coefficient of variation: the root-mean-square normalised standard deviation around the relevance signal. Lower means more reliable across trials and cross-validation splits tab. 3.

Architectures

Convolutional models are specified as Conv(Fc, Ft | Sc, St | H): channel span, time span, channel stride, time stride, number of filters. Dense sizes are the flattened inputs to the final dense layer. Each network ends with SoftMax. Sizes were checked by the output-length arithmetic (no padding, except where noted), and they match the paper's tables.

SetModelConv layersDense input
GRFCNN-AConv(6,6|1,1|32)3072
GRFCNN-A3Conv(6,3|1,1|32), Conv(1,3|1,1|32)3104
GRFCNN-A6Conv(6,6|1,1|32), Conv(1,6|1,1|32)2912
GRFCNN-C3Conv(3,3|1,1|32), Conv(3,3|1,1|32), Conv(2,2|1,1|32)3072
GRFCNN-C6Conv(6,6|1,1|32)3072
FBJACNN-AConv(33,33|1,1|64)4416
FBJACNN-A3Conv(33,3|1,1|64), Conv(1,3|1,1|32)3104
FBJACNN-A6Conv(33,6|1,1|32), Conv(1,6|1,1|32)2912
FBJACNN-C3Conv(3,3|1,1|32), Conv(3,3|1,1|32), Conv(3,3|1,1|16)41040
FBJACNN-C3-3Conv(3,3|3,3|64), Conv(3,3|1,1|64), Conv(3,3|1,1|32); time axis zero-padded to 1026720
FBJACNN-C6Conv(6,6|1,1|32), Conv(6,6|1,1|32), Conv(6,6|1,1|16)24768
FBJAXCNN-AConv(10,10|1,1|32)2944
FBJAXCNN-A3Conv(10,3|1,1|32), Conv(1,3|1,1|32)3104
FBJAXCNN-A6Conv(10,6|1,1|32), Conv(1,6|1,1|32)2912
FBJAXCNN-C3Conv(3,3|1,1|32) x 312160
FBJAXCNN-C6Conv(6,6|1,1|32), Conv(3,3|1,1|32), Conv(3,3|1,1|32)2944
LBJACNN-AConv(18,18|1,1|64)5376
LBJACNN-A3Conv(18,3|1,1|64), Conv(1,3|1,1|32)3104
LBJACNN-A6Conv(18,6|1,1|64), Conv(1,6|1,1|32)2912
LBJACNN-C3Conv(3,3|1,1|32), Conv(3,3|1,1|32), Conv(3,3|1,1|16)18240
LBJACNN-C3-3Conv(3,3|3,3|64), Conv(3,3|1,1|64), Conv(3,3|1,1|32); time axis zero-padded to 1021920
LBJACNN-C6Conv(6,6|1,1|32), Conv(6,6|1,1|32), Conv(6,6|1,1|16)4128
LBJAXCNN-AConv(6,6|1,1|32)3072
LBJAXCNN-A3Conv(6,3|1,1|32), Conv(1,3|1,1|32)3104
LBJAXCNN-A6Conv(6,6|1,1|32), Conv(1,6|1,1|32)2912
LBJAXCNN-C3Conv(3,3|1,1|32), Conv(3,3|1,1|32), Conv(2,2|1,1|32)3072
LBJAXCNN-C6Conv(6,6|1,1|32)3072

CNN-C3-3 is not reported for GRF, FBJAX or LBJAX tab. ST1. Source: GRF tab. ST5, FBJA tab. ST6, FBJAX tab. ST7, LBJA tab. ST8, LBJAX tab. ST9.

Pseudocode
# CNN-A on the GRF input  [tab. ST5]
# Input:  x, shape (6, 101): channels x time
# Output: class probabilities, shape (L,)

def cnn_a_grf(x):
    # One conv: 6x6 filters spanning all channels, 32 filters  [tab. ST5]
    hidden = relu(conv2d(x, kernel=(6, 6), filters=32))  # (1, 96, 32)
    # Flatten to 3072 values, then a dense layer to L classes  [tab. ST5]
    return softmax(dense(flatten(hidden), out_features=L))

Hyperparameters

NameValueWhereNotes
Subjects57 (29 F, 28 M); 23.1 ± 2.7 years§ Subjects and ethics statementPhysically active, no gait pathology
Trials per subject20, one session§ Experimental protocol and data acquisitionTrials of one subject appear in training and test splits
Walking path10 m, barefoot, self-selected speed§ Experimental protocol and data acquisition
Markers62 retro-reflective, 10 Oqus 310 cameras§ Experimental protocol and data acquisition fig. 5250 Hz
Force plates2 Kistler 9287CA§ Experimental protocol and data acquisition1000 Hz
Stride definitionRight heel strike to left toe-off; vertical GRF threshold 10 N§ Data processing
Marker filter2nd-order bidirectional Butterworth, 12 Hz§ Data processing
Force filter2nd-order bidirectional Butterworth, 50 Hz§ Data processing
Force normalisationTo body weight§ Data processing
Joint-angle softwareVisual3D Standard v4.86.0§ Data processing
Time normalisation101 points per channel§ Data processingInterpolation method not stated
z-scoringKinematics per trial; kinetics over all trials§ Data processingScope of kinetic statistics vs folds not stated
ScalingTo [-1, 1]§ Data processingExact rule not stated
OptimiserSGD§ Data AnalysisMomentum and weight decay not stated
Batch size5 random training samples§ Data AnalysisSampling with or without replacement not stated
IterationsUp to 30,000§ Data Analysis
Learning rate5e-3, then 1e-3, then 5e-4§ Data AnalysisSwitch every 1e4 iterations
Weight initNormal, mean 0, std m^(-1/2)§ Data Analysism = inputs per output neuron
Early stoppingPer learning-rate stage, on validation convergence§ Data AnalysisCriterion not stated
LossNot stated§ Data AnalysisSoftMax outputs for MLP and CNN models
Hidden size H64, 128, 256, 512, 1024tab. ST1MLP models
Depth L (MLP)2 or 3 dense layerstab. ST4Counts output layer; see Pitfalls
CNN familyCNN-A, A3, A6, C3, C3-3, C6§ Data Analysis tab. ST5–tab. ST9
SVMLinear, C = 0.1§ Data Analysisscikit-learn multi-class linear SVC
Cross-validation10-fold: 8 train / 1 validation / 1 test§ Data Analysis~912 training samples per split
Perturbation noiseGaussian sigma 0.5, 1, 2; salt-, pepper, salt+, shottab. 2 tab. ST2Gaussian sigma 1 in fig. 3
Perturbation schedule50 steps, 10 repetitions§ Prediction Accuracy and Model Robustness
LRP targetTrue classfig. 1Propagation rule not stated

Results

Author-reported. Setup: 57 subjects, one stride per trial, 10-fold cross-validation, subject identification with L = 57 classes. Values are mean (SD), in percent, as reported in tab. 1. The main Table 1 rows are a subset of ST1 and agree with it. Full ST1 values are below.

Prediction accuracy tab. 1 tab. ST1

ModelGRFFBJAFBJAXLBJALBJAX
Linear (SGD)95.4 (1.7)100.0 (0.0)96.3 (1.8)100.0 (0.0)91.5 (2.2)
Linear (SVM)100.0 (0.0)100.0 (0.0)99.7 (0.4)100.0 (0.0)99.8 (0.6)
MLP (2, 64)80.7 (3.6)100.0 (0.0)75.7 (4.7)99.9 (0.3)55.6 (6.5)
MLP (2, 128)89.1 (2.9)100.0 (0.0)85.7 (4.7)99.9 (0.3)69.9 (5.7)
MLP (2, 256)94.4 (2.3)100.0 (0.0)92.1 (3.2)100.0 (0.0)78.6 (4.2)
MLP (2, 512)96.6 (0.8)100.0 (0.0)95.7 (1.2)100.0 (0.0)87.1 (2.6)
MLP (2, 1024)98.6 (1.1)100.0 (0.0)97.0 (2.0)100.0 (0.0)91.9 (3.4)
MLP (3, 64)88.3 (3.7)99.9 (0.3)84.3 (3.3)99.9 (0.3)68.5 (8.3)
MLP (3, 128)92.5 (1.9)100.0 (0.0)90.9 (2.0)100.0 (0.0)84.2 (4.7)
MLP (3, 256)96.6 (0.8)100.0 (0.0)95.6 (2.6)100.0 (0.0)89.4 (4.3)
MLP (3, 512)98.2 (0.9)100.0 (0.0)97.0 (1.0)100.0 (0.0)94.0 (2.4)
MLP (3, 1024)98.8 (1.3)100.0 (0.0)97.8 (1.0)100.0 (0.0)96.5 (1.2)
CNN-A99.1 (0.8)100.0 (0.0)95.6 (1.7)99.9 (0.3)92.0 (3.9)
CNN-A399.6 (0.6)99.8 (0.4)95.0 (1.7)99.9 (0.3)94.2 (1.6)
CNN-A699.0 (0.8)99.9 (0.3)96.5 (1.3)99.8 (0.4)97.7 (1.4)
CNN-C399.2 (0.6)100.0 (0.0)97.7 (1.5)100.0 (0.0)97.0 (1.3)
CNN-C3-3not reported100.0 (0.0)not reported99.9 (0.3)not reported
CNN-C699.2 (0.6)99.9 (0.3)97.2 (1.6)100.0 (0.0)95.6 (1.8)

Headline statements: the linear SVM is at or near 100% on every set. Most networks are above 95% on GRF and on the full-body and lower-body joint-angle sets. Small MLPs (64 units) are weakest, especially on the sagittal-only sets tab. ST1 § Prediction Accuracy and Model Robustness.

Robustness: AOPC for GRF, lower is more robust tab. 2 tab. ST2

Table 2 in the main text reports the same rows, but with a different Linear (SVM) row. See Pitfalls.

ModelGauss 0.5Gauss 1.0Gauss 2.0Salt-PepperSalt+Shot
Linear (SGD)40.5 (6.0)45.6 (3.0)47.6 (1.8)46.1 (2.7)37.1 (7.0)46.4 (3.1)46.5 (2.9)
Linear (SVM)7.4 (4.6)26.2 (5.6)39.9 (3.7)34.0 (6.9)5.0 (3.2)35.9 (7.2)35.9 (7.5)
MLP (2, 64)19.2 (15.9)29.3 (13.6)38.8 (9.3)43.1 (7.3)16.6 (15.8)42.9 (7.6)42.8 (7.7)
MLP (2, 128)14.4 (14.2)25.9 (13.1)36.8 (9.4)42.0 (6.9)11.7 (13.6)41.8 (7.6)41.7 (7.7)
MLP (2, 256)10.3 (12)21.8 (12.4)34.9 (9.6)40.8 (6.7)8.1 (11.1)40.7 (7.2)40.5 (7.2)
MLP (2, 512)7.6 (9.8)19.0 (11.5)32.5 (9.6)39.6 (6.6)5.7 (9.0)39.4 (7.3)39.5 (7.2)
MLP (2, 1024)5.9 (8.1)17.0 (11.1)31.9 (9.2)38.8 (6.5)4.4 (7.0)38.4 (7.2)38.6 (7.2)
MLP (3, 64)16.2 (14.0)27.6 (12.6)37.8 (9.0)43.5 (7.1)14.4 (13.6)43.3 (7.4)43.3 (7.4)
MLP (3, 128)12.5 (12.3)24.3 (11.9)35.8 (8.9)42.7 (6.9)10.3 (11.9)42.4 (7.4)42.5 (7.4)
MLP (3, 256)8.9 (9.7)20.8 (10.9)34.9 (8.4)41.7 (6.8)7.7 (9.5)41.2 (7.4)41.1 (7.5)
MLP (3, 512)6.9 (8.4)18.7 (10.4)33.4 (8.2)40.8 (6.8)5.5 (7.6)40.4 (7.1)40.4 (7.2)
MLP (3, 1024)5.4 (7.0)16.7 (9.4)32.4 (7.8)40.0 (6.6)4.3 (6.1)39.4 (7.2)39.4 (7.2)
CNN-A6.1 (6.8)18.2 (9.4)33.1 (8.0)36.9 (6.6)8.8 (8.5)37.4 (7.5)37.4 (7.6)
CNN-A39.4 (7.7)23.4 (9.0)36.6 (7.4)38.0 (7.4)6.6 (6.8)39.6 (6.7)39.6 (6.7)
CNN-A68.6 (7.4)22.9 (9.3)35.9 (7.6)38.0 (7.0)8.8 (8.3)39.3 (7.0)39.3 (6.9)
CNN-C312.2 (8.6)27.5 (9.4)38.0 (7.0)31.0 (8.5)11.3 (8.6)37.9 (8.2)38.1 (8.1)
CNN-C65.9 (6.5)18.3 (9.3)33.3 (7.8)37.2 (6.6)8.5 (8.2)37.3 (7.2)37.7 (7.2)

Noise definitions tab. ST2 caption: Gaussian adds white noise; Salt- sets inputs to -1; Salt+ sets inputs to 1; Pepper sets inputs to 0; Shot sets inputs to a random value from {-1, 0, 1}.

Robustness was measured for GRF only tab. ST2. Text summary: the linear SGD network is the least robust. The paper reports that wider fully connected models and deeper architectures are more robust than the smaller ones § Prediction Accuracy and Model Robustness.

Reliability of relevance: coefficient of variation, lower is more stable tab. 3 tab. ST3

ModelGRFFBJAFBJAXLBJALBJAX
Linear (SGD)4.31 (0.25)4.27 (0.08)3.93 (0.12)4.16 (0.10)3.86 (0.15)
Linear (SVM)0.31 (0.08)0.56 (0.10)0.31 (0.07)0.48 (0.09)0.26 (0.05)
MLP (2, 64)1.61 (0.56)2.47 (0.12)1.96 (0.29)2.11 (0.13)1.89 (0.38)
MLP (2, 128)1.38 (0.46)2.27 (0.10)1.59 (0.25)1.91 (0.11)1.48 (0.32)
MLP (2, 256)1.12 (0.34)2.09 (0.09)1.36 (0.21)1.74 (0.11)1.21 (0.27)
MLP (2, 512)0.95 (0.28)1.93 (0.08)1.10 (0.15)1.60 (0.10)0.96 (0.21)
MLP (2, 1024)0.83 (0.21)1.80 (0.08)0.94 (0.12)1.48 (0.09)0.83 (0.18)
MLP (3, 64)1.31 (0.34)2.73 (0.15)1.58 (0.17)2.37 (0.16)1.41 (0.23)
MLP (3, 128)1.00 (0.23)2.44 (0.14)1.28 (0.13)2.05 (0.14)1.02 (0.17)
MLP (3, 256)0.84 (0.18)2.21 (0.13)1.05 (0.10)1.86 (0.13)0.85 (0.12)
MLP (3, 512)0.72 (0.15)2.02 (0.11)0.90 (0.08)1.66 (0.11)0.70 (0.10)
MLP (3, 1024)0.63 (0.12)1.85 (0.10)0.77 (0.08)1.50 (0.10)0.61 (0.09)
CNN-A0.30 (0.08)0.56 (0.09)0.35 (0.06)0.49 (0.08)0.32 (0.05)
CNN-A30.37 (0.10)0.64 (0.11)0.37 (0.08)0.55 (0.09)0.35 (0.06)
CNN-A60.32 (0.09)0.64 (0.12)0.38 (0.07)0.58 (0.11)0.27 (0.05)
CNN-C30.35 (0.08)0.50 (0.08)0.43 (0.08)0.48 (0.08)0.44 (0.08)
CNN-C3-3not reported2.74 (0.10)not reported2.32 (0.13)not reported
CNN-C60.60 (0.12)0.59 (0.08)0.45 (0.08)0.62 (0.11)0.27 (0.05)

Text summary: lowest reliability for Linear (SGD). Reliability rises with MLP width and depth. The linear SVM and the CNNs are most reliable § Results: Coefficient of variation of relevance.

Qualitative findings fig. 1 fig. 2 fig. 4 fig. SF1–fig. SF4

  • Relevance is spread over many variables and time windows. Single individual characteristics are rare, and most models use complex combinations § Results § Discussion. Subject-specific examples are given in fig. 2 and in the supplementary figures fig. SF1–fig. SF4.
  • Left-right symmetric relevance patterns appear for most models except CNN-C3 fig. 4 § Discussion.
  • The models were not given any physiological information, so these patterns are learned, not imposed § Results.

Paper vs code

No official code is used on this card. The paper's Data Availability section links an authors' repository, sebastian-lapuschkin/interpretable-deep-gait § Data Availability. Its python/LICENSE file limits use to academic purposes, which excludes commercial use LICENSE. Because of that, the code is not cited, and no code, code_commit or code_license field is set. Discrepancies between the paper and that code were therefore not checked. The paper's own text is the only source for this card.

Pitfalls

  • CNN-A3 and CNN-A6 time spans are inverted in the text. The text says CNN-A3 reads Ft = 6 and CNN-A6 reads Ft = 3 in the input layer § Data Analysis. The tables say the reverse: CNN-A3 uses Conv(6,3) and CNN-A6 uses Conv(6,6) tab. ST5. The dense sizes (3104 for A3, 2912 for A6) match the tables. Implement the tables.
  • Linear (SVM) robustness row differs between Table 2 and ST2. Table 2 gives 4.0 (3.9), 18.6 (7.0), 35.4 (4.7), 31.3 (7.7), 2.5 (2.4), 32.8 (8.7), 32.4 (8.6). ST2 gives 7.4 (4.6), 26.2 (5.6), 39.9 (3.7), 34.0 (6.9), 5.0 (3.2), 35.9 (7.2), 35.9 (7.5). The other rows agree. The paper does not say which is correct. This card reports both.
  • Loss function not stated. The text gives SoftMax outputs for the networks, but never names the loss. The linear SGD model has no SoftMax in its listed architecture tab. ST4, so its loss is also unstated.
  • Optimiser details missing. Momentum, weight decay, and whether mini-batches are drawn with or without replacement are not stated § Data Analysis.
  • Learning-rate schedule is ambiguous. The text says the rate is "gradually lowered" to 1e-3, then 5e-4, "after every 1e4" iterations § Data Analysis. The reading used above is switches at 1e4 and 2e4. Early termination of each stage can shorten it, and its criterion is not stated.
  • Possible normalisation leakage. Kinetic channels are z-scored "for all trials" § Data processing. The paper does not say whether these statistics come from training folds only. Compute the statistics from training data to avoid leakage.
  • Scaling and resampling are underspecified. The rule for scaling to [-1, 1] and the interpolation method for the 101-point resampling are not stated § Data processing.
  • MLP depth notation. "L" is described as "the number of layers" § Data Analysis. The tables show L counts dense layers including the output. MLP (2, H) has one hidden layer; MLP (3, H) has two tab. ST4.
  • CNN depth varies by feature set. The text says the number of convolution layers is C in {1, 2, 3} § Data Analysis. In practice, CNN-C6 has one conv layer for GRF and LBJAX, and three for FBJA, FBJAX and LBJA tab. ST5–tab. ST9. Use the tables.
  • Time-padding for CNN-C3-3. The time axis is padded to 102 with one extra column of zeros § Neural Network Architectures. Which side is padded is not stated. The stated dense sizes (6720 for FBJA and 1920 for LBJA) match a 102-point input.
  • Channel lists are not enumerated. The paper gives only the channel counts (6, 33, 10, 18, 6). It does not list which variables they are.
  • Cross-validation details. How the ten test folds are formed, and whether the reported mean (SD) is over the folds, is not explicitly stated § Data Analysis. Validation and test partitions are random per subject, and the paper does not say whether trials of one subject are kept together.
  • Within-session generalisation only. The 20 trials per subject are spread at random over the partitions § Data Analysis, so a test trial's subject also has training trials from the same session. The results do not show that identification holds across sessions, days or people with pathology. The paper's claims of uniqueness rest on this design.
  • SVM specifics. The paper names scikit-learn's multi-class linear SVC § Data Analysis, but not the exact estimator class, multi-class strategy or loss.
  • AOPC formula. The paper refers to Samek et al. for AOPC § Prediction Accuracy and Model Robustness. The aggregation over steps is not restated in this paper.
  • Coefficient of variation. The paper gives a description in words only: "root mean square normalised band of standard deviation around the relevance signal" § Results: Coefficient of variation. The normalisation constant and whether it is per time point or per component are not stated.
  • LRP propagation rule not stated. The general relevance rule eq. 2 and pooling eq. 3 are given, and the linear case is worked out. The rule for dense and convolution layers used in the experiments (for example any stabiliser term) is not stated. The paper cites Bach et al. for details.
  • Relevance is for the true class. The paper analyses the true-class prediction only fig. 1. Relevance maps for a wrong predicted class will differ.
  • Abstract and body disagree on inputs. The abstract names ground reaction forces and full-body joint angles as the inputs [Abstract]. The results and subject figures use lower-body joint angles (LBJA and LBJAX) § Results fig. 2.
  • Pre-print. This card follows the arXiv pre-print (v2, dated 2019-02-27) and says it is a pre-print of a Scientific Reports article § Acknowledgements. The journal version may differ.
  • Dataset not used or checked. The data are on Mendeley Data (DOI 10.17632/svx74xcrjr.1) § Data Availability. This card does not check the dataset's license. Check it before reuse.
  • All numbers are the authors'. Accuracy, AOPC and CV values are author-reported, on one dataset.

Lineage

  • Builds on: Layer-wise Relevance Propagation, Bach et al., cited as [BachPLOS15] in the paper. No card yet.
  • Uses AOPC from Samek et al., cited as [SamTNNLS17] in the paper. No card yet.
  • Baselines inside the paper: linear SGD and linear SVM, against MLPs and CNNs § Results.
  • Superseded by: not known from the content of this paper.

Source and license

Adapted from “Explaining the Unique Nature of Individual Gait Patterns with Deep Learning” by Fabian Horst, Sebastian Lapuschkin, Wojciech Samek, Klaus-Robert Müller, Wolfgang I. Schöllhorn (arXiv:1808.04308), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors.