OpenDRC: An Open-Source Implementation
of the DRC Model

 The Unsupported Decay Error

 
OpenDRC home

During the development of OpenDRC it became apparent that some of the few remaining discrepancies between the behaviour of OpenDRC and DRC1.2 were not due to the improper implementation of OpenDRC.

Analysis of the problem began with the descrepencies reported by DRCTest in the DRCTest.txt output file. Normally the Unsupported-Decay parameter is applied to the activations values of each Phoneme Buffer (PB) node when their net input (from both the POL and GPC layers) is zero. What was happening in DRC1.2(Windows version) was that the unsupported decay was applied in situations where the net input was not zero. In other cases it would not be applied when the input is zero.

There was also the situation where a phoneme unique to the GPC route would become permanently unsupported (when shifting a new input character caused a change in GPC rules) and thus the input activations to the corresponding PB layer node would become permanently zero. In some of these cases the Unsupported Decay parameter would be applied for the first few cycles but not thereafter.

Unsupported Decay Not Applied:

In this first example the Unsupported Decay was NOT applied by DRC1.2 when the inputs to the PB node were zero.

The following is a small section of a DRCTest.txt output file that shows where DRC1.2 and OpenDRC differ in activation values. On cycle #58 (see below) the 6th column node 'E' of the Phoneme Buffer shows a difference between the DRC1.2 (OLD) run and the OpenDRC (NEW) run. OpenDRC starts applying the Unsupported Decay in cycle #58 whereas DRC1.2 does not apply the decay at all. This behaviour continues until the end of the run at cycle #77.


Processing ACTS files:
    Comparing:
        NEW: usdbug-1.drc\bisque.acts (2216)
        OLD: .\bisque.acts (2216)
        ---
        Old: 'Cycle58 P5 # E'  #=0.058087 (1526)
        New: 'Cycle58 P5 # E'  #=0.055183 (1526)
        ---
        Old: 'TPh Cycle58 #'  #=1.174745 (1531)
        New: 'TPh Cycle58 #'  #=1.171840 (1531)
        ---
        Old: 'Cycle59 P5 # E'  #=0.058087 (1562)
        New: 'Cycle59 P5 # E'  #=0.052424 (1562)
        ---
        Old: 'TPh Cycle59 #'  #=1.244104 (1567)
        New: 'TPh Cycle59 #'  #=1.238440 (1567)
        ---
        Old: 'Cycle60 P5 # E'  #=0.058087 (1598)
        New: 'Cycle60 P5 # E'  #=0.049802 (1598)
		...

The support that OpenDRC is not at fault comes from the bisque.acts file. In cycle #57 (see below) the GPCRoute translates the input word 'bisque' (without the word termination) as 'bIskwE'. In the same cycle the POL(Phon) has only one phonemic word activated 'bIsk'. Thus only the GPCRoute (GPC5 'E') feeds activation to the PB Column 6 'E' node, there is no activation fed from the POL to this PB node.

In cycle #58 the word termination character '+' is shifted and the GPCRoute translation changes to 'bIsk' which is now the same as the POL(Phon) node activation. Thus neither the GPCRoute or the POL are feeding activation into the PB column 6 node for the 'E' phoneme. Therefore, this phoneme is now unsupported (zero input activation) and thus should be subject to Unsupported Decay. However, on this cycle and every cycle to the end of the run for this test case the PB column 6 phoneme 'E' activations says at 0.058087 which indicates no Unsupported Decay has taken place. This indicates that DRC1.2 is in error.


Cycle57 VF0 01111001010100 b
Cycle57 VF1 01001001000100 i
Cycle57 VF2 11011000010001 s
Cycle57 VF3 11111100001000 q
Cycle57 VF4 10111100000000 u
Cycle57 VF5 11001100000001 e
Cycle57 VF6 00000000000000 +
Cycle57 VF7 00000000000000 +
Cycle57 L0 0.876137 b
Cycle57 L1 0.876137 i
Cycle57 L2 0.876137 s
Cycle57 L3 0.876137 q
Cycle57 L4 0.876137 u
Cycle57 L5 0.876137 e
Cycle57 L6 0.876137 +
Cycle57 L7 0.876137 +
Cycle57 Orth 0.926137 bisque
Cycle57 Phon 0.516821 bIsk
Cycle57 GPCRoute bisque (A)b->b (m)i->I (A)s->s (A)q->k (m)[q]u->w (m)e->E
Cycle57 GPC0 0.866956 b
Cycle57 GPC1 0.866956 I
Cycle57 GPC2 0.866956 s
Cycle57 GPC3 0.866956 k
Cycle57 GPC4 0.866956 w
Cycle57 GPC5 0.866956 E
Cycle57 P0 0.271716 b
Cycle57 P1 0.234559 I
Cycle57 P2 0.205420 s
Cycle57 P3 0.182255 k
Cycle57 P4 0.097492 +
Cycle57 P4 0.056586 w
Cycle57 P5 0.058087 E
TL Cycle57 7.009098
TO Cycle57 0.926137
TP Cycle57 0.516821
TGPC Cycle57 5.201738
TPh Cycle57 1.106116
Cycle58 VF0 01111001010100 b
Cycle58 VF1 01001001000100 i
Cycle58 VF2 11011000010001 s
Cycle58 VF3 11111100001000 q
Cycle58 VF4 10111100000000 u
Cycle58 VF5 11001100000001 e
Cycle58 VF6 00000000000000 +
Cycle58 VF7 00000000000000 +
Cycle58 L0 0.884754 b
Cycle58 L1 0.884754 i
Cycle58 L2 0.884754 s
Cycle58 L3 0.884754 q
Cycle58 L4 0.884754 u
Cycle58 L5 0.884754 e
Cycle58 L6 0.884754 +
Cycle58 L7 0.884754 +
Cycle58 Orth 0.934592 bisque
Cycle58 Phon 0.537321 bIsk
Cycle58 GPCRoute bisque+ (A)b->b (m)i->I (A)s->s (e)que->k
Cycle58 GPC0 0.876137 b
Cycle58 GPC1 0.876137 I
Cycle58 GPC2 0.876137 s
Cycle58 GPC3 0.876137 k
Cycle58 GPC4 0.876137 +
Cycle58 P0 0.284999 b
Cycle58 P1 0.248521 I
Cycle58 P2 0.219913 s
Cycle58 P3 0.197170 k
Cycle58 P4 0.112452 +
Cycle58 P4 0.053603 w
Cycle58 P5 0.058087 E
TL Cycle58 7.078033
TO Cycle58 0.934592
TP Cycle58 0.537321
TGPC Cycle58 4.380686
TPh Cycle58 1.174745
		...
Cycle59 P5 0.058087 E
		...
Cycle60 P5 0.058087 E
		...

		...
Cycle77 P5 0.058087 E
OpenDRC home