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)