A row with positive signed margin is already correct under the current state, so the perceptron update is exactly zero for that row.

highlighted = computed this step

Use one displayed row

Start from w=(1,0), b=1. The displayed row is x=(1, 1) with label 1.

w=(1,0), b=1,x=(1,1), y=1w=(1,0),\ b=1,\quad x=(1,1),\ y=1
When There Is No UpdateA positive signed margin keeps the displayed state unchanged.already correct row: no updatepositive y*a means the state is keptfieldderived valuecurrentw=(1,0), b=1rowx=(1,1), y=+1scorea=w*x+b=2signed marginy*a=2updateΔw=(0,0), Δb=0nextw=(1,0), b=1no update: Δw=(0,0), Δb=0 and next state equals current state

The signed margin is positive

The score is w*x+b=2. Since y=1, the signed margin y*score is 2, which is positive.

a=2,ya=2>0a=2,\quad y a=2>0
When There Is No UpdateA positive signed margin keeps the displayed state unchanged.already correct row: no updatepositive y*a means the state is keptfieldderived valuecurrentw=(1,0), b=1rowx=(1,1), y=+1scorea=w*x+b=2signed marginy*a=2updateΔw=(0,0), Δb=0nextw=(1,0), b=1no update: Δw=(0,0), Δb=0 and next state equals current state

So nothing changes

Because y*score is positive, the update vector is (0,0) and the bias update is 0. The next state stays w=(1,0), b=1. This is one displayed row only.

Δw=(0,0), Δb=0,w=(1,0),b=1\Delta w=(0,0),\ \Delta b=0,\quad w=(1,0), b=1
When There Is No UpdateA positive signed margin keeps the displayed state unchanged.already correct row: no updatepositive y*a means the state is keptfieldderived valuecurrentw=(1,0), b=1rowx=(1,1), y=+1scorea=w*x+b=2signed marginy*a=2updateΔw=(0,0), Δb=0nextw=(1,0), b=1no update: Δw=(0,0), Δb=0 and next state equals current state