Skip to content

← deep_learning package

DPSGDStep

The differentially private SGD (DPSGD) optimizer step.

Based on Abadi et al., 2016, this optimizer can be used to reduce the sensitivity of the model to individual training samples or groups thereof, and can thus be used to train models on sensitive data. The optimizer has a number of parameters that are potentially data dependent, and must be provided by the user. IMPORTANT: this optimizer, unlike the others, requires access to the per-example gradients; thus, the gradients should have a leading "batch" dimension. This can be accomplished by using the VectorizedMap node on the gradient pipeline. Like all step nodes, this node only processes gradients, and the resulting updates must be applied manually to the weights (this can be accomplished using the Add node). However, you can also pass it to the StepSolver node which implements the full optimization loop. The learning rate can instead be given as a schedule, by wiring one of the Schedule nodes into the learning_rate_schedule port. More Info... Version 0.2.0

Ports/Properties

gradients

Gradients to be transformed.

verbose name
Gradients
default value
None
port type
DataPort
value type
object (can be None)
data direction
INOUT

weights

Optional current weights.

verbose name
Weights
default value
None
port type
DataPort
value type
object (can be None)
data direction
IN

state

Explicit state of the node.

verbose name
State
default value
None
port type
DataPort
value type
object (can be None)
data direction
INOUT

learning_rate_schedule

Optional learning rate schedule.

verbose name
Learning Rate Schedule
default value
None
port type
DataPort
value type
BaseNode (can be None)
data direction
IN

learning_rate

Learning rate. A typical choice may be 0.001 here, but this is problem dependent. If a learning rate schedule is provided, this value should be left unspecified.

verbose name
Learning Rate
default value
None
port type
FloatPort
value type
float (can be None)

l2_norm_clip

L2 norm clipping value. Maximum l2-norm of the per-example parameter updates. Must be provided.

verbose name
L2 Norm Clip
default value
None
port type
FloatPort
value type
float (can be None)

noise_multiplier

Noise multiplier. Ratio of standard deviation to the clipping norm. Must be provided.

verbose name
Noise Multiplier
default value
None
port type
FloatPort
value type
float (can be None)

randseed

Integer random seed. Must be provided.

verbose name
Randseed
default value
None
port type
IntPort
value type
int (can be None)

momentum

Optional exponential decay rate for momentum.

verbose name
Optional Momentum
default value
None
port type
FloatPort
value type
float (can be None)

nesterov

Whether to use Nesterov acceleration.

verbose name
Use Nesterov Acceleration
default value
False
port type
BoolPort
value type
bool (can be None)

set_breakpoint

Set a breakpoint on this node. If this is enabled, your debugger (if one is attached) will trigger a breakpoint.

verbose name
Set Breakpoint (Debug Only)
default value
False
port type
BoolPort
value type
bool (can be None)

metadata

User-definable meta-data associated with the node. Usually reserved for technical purposes.

verbose name
Metadata
default value
{}
port type
DictPort
value type
dict (can be None)