@@ -57,14 +57,32 @@ print of "╚══════════════════════
5757print of ""
5858
5959embed_matrix is random_matrix of [vocab_size, d_model]
60- W_Q is random_matrix of [d_model, d_k]
61- W_K is random_matrix of [d_model, d_k]
62- W_V is random_matrix of [d_model, d_k]
63- W_O is random_matrix of [d_k, d_model]
64- W_ff1 is random_matrix of [d_model, d_ff]
65- W_ff2 is random_matrix of [d_ff, d_model]
66-
67- print of "Weight initialization complete."
60+
61+ # Layer 1 weights
62+ W_Q1 is random_matrix of [d_model, d_k]
63+ W_K1 is random_matrix of [d_model, d_k]
64+ W_V1 is random_matrix of [d_model, d_k]
65+ W_ff1_1 is random_matrix of [d_model, d_ff]
66+ W_ff2_1 is random_matrix of [d_ff, d_model]
67+
68+ # Layer 2 weights
69+ W_Q2 is random_matrix of [d_model, d_k]
70+ W_K2 is random_matrix of [d_model, d_k]
71+ W_V2 is random_matrix of [d_model, d_k]
72+ W_ff1_2 is random_matrix of [d_model, d_ff]
73+ W_ff2_2 is random_matrix of [d_ff, d_model]
74+
75+ # Output projection (hidden -> vocab logits)
76+ W_out is random_matrix of [d_model, vocab_size]
77+
78+ # Aliases for backward compatibility
79+ W_Q is W_Q1
80+ W_K is W_K1
81+ W_V is W_V1
82+ W_ff1 is W_ff1_1
83+ W_ff2 is W_ff2_1
84+
85+ print of "Weight initialization complete (2 layers)."
6886print of ""
6987print of ">>> INTERROGATIVE: Querying initialization state..."
7088
@@ -118,6 +136,142 @@ define introspective_attention as:
118136
119137 return output
120138
139+
140+ # Causal Introspective Attention (for autoregressive generation)
141+ # Uses causal mask to prevent attending to future tokens
142+ define causal_introspective_attention as:
143+ input_emb is arg[0]
144+ w_q is arg[1]
145+ w_k is arg[2]
146+ w_v is arg[3]
147+ attn_scale is arg[4]
148+ seq_length is arg[5]
149+
150+ Q is matmul of [input_emb, w_q]
151+ K is matmul of [input_emb, w_k]
152+ V is matmul of [input_emb, w_v]
153+
154+ K_T is transpose of K
155+ scores is matmul of [Q, K_T]
156+ scores is matrix_scale of [scores, attn_scale]
157+
158+ mask is causal_mask of seq_length
159+ scores is matrix_add of [scores, mask]
160+
161+ if oscillating:
162+ prev_scores is was is scores
163+ scores is matrix_scale of [matrix_add of [scores, prev_scores], 0.5]
164+
165+ if chaotic:
166+ scores is matrix_scale of [scores, 0.5]
167+
168+ attn_weights is softmax_matrix of scores
169+ output is matmul of [attn_weights, V]
170+
171+ return output
172+
173+
174+ define introspective_layer as:
175+ input_hidden is arg[0]
176+ w_q is arg[1]
177+ w_k is arg[2]
178+ w_v is arg[3]
179+ w_ff1 is arg[4]
180+ w_ff2 is arg[5]
181+ attn_scale is arg[6]
182+ layer_num is arg[7]
183+
184+ attn_out is introspective_attention of [input_hidden, w_q, w_k, w_v, attn_scale]
185+ layer_grad is why is attn_out
186+
187+ hidden is layer_norm_matrix of attn_out
188+ residual1 is matrix_add of [input_hidden, hidden]
189+
190+ ffn_h is matmul of [residual1, w_ff1]
191+ ffn_act is gelu_matrix of ffn_h
192+ ffn_out is matmul of [ffn_act, w_ff2]
193+
194+ output is matrix_add of [residual1, ffn_out]
195+ output is layer_norm_matrix of output
196+
197+ layer_quality is how is output
198+ layer_trend is trend is output
199+
200+ layer_converged is 0
201+ if stable:
202+ layer_converged is 1
203+ print of " Layer"
204+ print of layer_num
205+ print of "CONVERGED (stable)"
206+
207+ return [output, layer_converged]
208+
209+
210+ # Causal Introspective Layer (for generation)
211+ # Uses causal masking to prevent looking at future tokens
212+ define causal_introspective_layer as:
213+ input_hidden is arg[0]
214+ w_q is arg[1]
215+ w_k is arg[2]
216+ w_v is arg[3]
217+ w_ff1 is arg[4]
218+ w_ff2 is arg[5]
219+ attn_scale is arg[6]
220+ layer_num is arg[7]
221+ seq_length is arg[8]
222+
223+ attn_out is causal_introspective_attention of [input_hidden, w_q, w_k, w_v, attn_scale, seq_length]
224+ layer_grad is why is attn_out
225+
226+ hidden is layer_norm_matrix of attn_out
227+ residual1 is matrix_add of [input_hidden, hidden]
228+
229+ ffn_h is matmul of [residual1, w_ff1]
230+ ffn_act is gelu_matrix of ffn_h
231+ ffn_out is matmul of [ffn_act, w_ff2]
232+
233+ output is matrix_add of [residual1, ffn_out]
234+ output is layer_norm_matrix of output
235+
236+ layer_converged is 0
237+ if stable:
238+ layer_converged is 1
239+ print of " Layer"
240+ print of layer_num
241+ print of "CONVERGED (causal)"
242+
243+ return [output, layer_converged]
244+
245+
246+ # Temperature-based Token Sampling
247+ # Uses introspection to adapt temperature based on model confidence
248+ define temperature_sample as:
249+ hidden_state is arg[0]
250+ temp is arg[1]
251+
252+ logits is matmul of [hidden_state, W_out]
253+ inv_temp is 1.0 / temp
254+ scaled_logits is matrix_scale of [logits, inv_temp]
255+ probs is softmax_matrix of scaled_logits
256+ prob_list is matrix_to_list of probs
257+ last_row is prob_list[0]
258+
259+ best_idx is 0
260+ best_val is 0.0
261+ check_idx is 0
262+
263+ loop while check_idx < vocab_size:
264+ current_prob is last_row[check_idx]
265+ current_val is what is current_prob
266+ if current_val > best_val:
267+ best_val is current_val
268+ best_idx is check_idx
269+
270+ check_idx is check_idx + 1
271+
272+ return best_idx
273+
274+
121275print of "Testing introspective attention..."
122276print of ""
123277
@@ -178,24 +332,31 @@ should_continue is 1
178332
179333loop while epoch < max_epochs:
180334 if should_continue > 0:
181- attn_out is introspective_attention of [input_embeddings, W_Q, W_K, W_V, scale]
182- attn_grad is why is attn_out
183-
184- hidden is layer_norm_matrix of attn_out
185-
186- ffn_hidden is matmul of [hidden, W_ff1]
187- ffn_grad is why is ffn_hidden
188-
189- ffn_act is gelu_matrix of ffn_hidden
190- output is matmul of [ffn_act, W_ff2]
191- output_grad is why is output
335+ hidden is input_embeddings
336+ total_layers_converged is 0
337+
338+ # Layer 1
339+ layer1_result is introspective_layer of [hidden, W_Q1, W_K1, W_V1, W_ff1_1, W_ff2_1, scale, 1]
340+ hidden is layer1_result[0]
341+ layer1_conv is layer1_result[1]
342+ total_layers_converged is total_layers_converged + layer1_conv
343+
344+ # Layer 2 (only if Layer 1 didn't converge - adaptive depth)
345+ if layer1_conv < 1:
346+ layer2_result is introspective_layer of [hidden, W_Q2, W_K2, W_V2, W_ff1_2, W_ff2_2, scale, 2]
347+ hidden is layer2_result[0]
348+ layer2_conv is layer2_result[1]
349+ total_layers_converged is total_layers_converged + layer2_conv
350+ else:
351+ print of " [EARLY EXIT] Skipping Layer 2 (Layer 1 converged)"
352+
353+ output is hidden
192354
193355 # ═══════════════════════════════════════════════════════════════════
194356 # COMPUTE ERROR AND LOSS
195357 # ═══════════════════════════════════════════════════════════════════
196358
197359 error is matrix_add of [output, matrix_scale of [target_output, -1.0]]
198- error_grad is why is error
199360
200361 prev_loss is current_loss
201362 current_loss is compute_loss of [output, target_output]
@@ -238,23 +399,29 @@ loop while epoch < max_epochs:
238399 if oscillating:
239400 update_scale is 0.9995
240401
241- # Apply scaled updates to all weights
242- W_ff2 is matrix_scale of [W_ff2, update_scale]
243- W_ff1 is matrix_scale of [W_ff1, update_scale]
244- W_Q is matrix_scale of [W_Q, update_scale]
245- W_K is matrix_scale of [W_K, update_scale]
246- W_V is matrix_scale of [W_V, update_scale]
247-
248- # ═══════════════════════════════════════════════════════════════════
249- # EPOCH LOGGING WITH GRADIENT INFO
250- # ═══════════════════════════════════════════════════════════════════
402+ # Apply scaled updates to all layer weights
403+ # Layer 1
404+ W_Q1 is matrix_scale of [W_Q1, update_scale]
405+ W_K1 is matrix_scale of [W_K1, update_scale]
406+ W_V1 is matrix_scale of [W_V1, update_scale]
407+ W_ff1_1 is matrix_scale of [W_ff1_1, update_scale]
408+ W_ff2_1 is matrix_scale of [W_ff2_1, update_scale]
409+
410+ # Layer 2
411+ W_Q2 is matrix_scale of [W_Q2, update_scale]
412+ W_K2 is matrix_scale of [W_K2, update_scale]
413+ W_V2 is matrix_scale of [W_V2, update_scale]
414+ W_ff1_2 is matrix_scale of [W_ff1_2, update_scale]
415+ W_ff2_2 is matrix_scale of [W_ff2_2, update_scale]
251416
252417 print of "Epoch:"
253418 print of epoch
254419 print of " Loss:"
255420 print of current_loss
256421 print of " Trend:"
257422 print of loss_trend
423+ print of " Layers converged:"
424+ print of total_layers_converged
258425 print of " Update scale:"
259426 print of update_scale
260427 print of " Framework Strength:"
@@ -306,27 +473,27 @@ define introspective_generate as:
306473 pos_enc is sinusoidal_pe of [current_len, d_model]
307474 hidden is matrix_add of [current_emb, pos_enc]
308475
309- hidden is introspective_attention of [hidden, W_Q, W_K, W_V, scale]
310- hidden is layer_norm_matrix of hidden
311-
312- ffn_h is matmul of [hidden, W_ff1]
313- ffn_a is gelu_matrix of ffn_h
314- logits is matmul of [ffn_a, W_ff2]
315-
316- logit_list is matrix_to_list of logits
317- first_row is logit_list[0]
318- next_token_raw is first_row[0]
476+ # Multi-layer forward with CAUSAL MASKING and adaptive depth
477+ layer1_out is causal_introspective_layer of [hidden, W_Q1, W_K1, W_V1, W_ff1_1, W_ff2_1, scale, 1, current_len]
478+ hidden is layer1_out[0]
479+ l1_conv is layer1_out[1]
319480
320- scaled_raw is next_token_raw * 10
321- rounded_raw is round of scaled_raw
322- next_token is abs of rounded_raw
323- if next_token > 9:
324- next_token is next_token % 10
481+ # Only run layer 2 if layer 1 didn't converge
482+ layers_used is 1
483+ if l1_conv < 1:
484+ layer2_out is causal_introspective_layer of [hidden, W_Q2, W_K2, W_V2, W_ff1_2, W_ff2_2, scale, 2, current_len]
485+ hidden is layer2_out[0]
486+ layers_used is 2
325487
488+ next_token is temperature_sample of [hidden, temperature]
326489 hidden_trend is trend is hidden
327490
328491 print of " Generated token:"
329492 print of next_token
493+ print of " Layers used:"
494+ print of layers_used
495+ print of " Temperature:"
496+ print of temperature
330497 print of " Hidden trend:"
331498 print of hidden_trend
332499 print of " Framework Strength:"
@@ -451,6 +618,9 @@ print of "Key innovations demonstrated:"
451618print of " 1. INTERROGATIVES: why/how/what/when for gradient-free updates"
452619print of " 2. TEMPORALS: was/change/trend for history-aware adaptation"
453620print of " 3. PREDICATES: converged/stable/oscillating for self-termination"
621+ print of " 4. MULTI-LAYER: Per-layer convergence with adaptive depth"
622+ print of " 5. TEMPERATURE: Predicate-adaptive sampling (oscillating/chaotic)"
623+ print of " 6. CAUSAL MASKING: Autoregressive generation with proper masking"
454624print of ""
455625print of "This model KNOWS when it has learned enough and when to stop generating."
456626print of ""
0 commit comments