2 पॉइंट द्वारा GN⁺ 2025-12-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 1980 के दशक के Mark V. Shaney प्रोग्राम से प्रेरित होकर, लगभग 30 lines of Python code में बनाया गया एक सरल Markov text generator Mark V. Shaney Junior तैयार किया गया
  • यह मॉडल तीन शब्दों (trigram) के आधार पर अगले शब्द की प्रायिकता के साथ भविष्यवाणी करता है, और training data के रूप में 200 से अधिक ब्लॉग पोस्ट्स (लगभग 2 लाख शब्द) का उपयोग करता है
  • जनरेट किए गए वाक्य Lisp, Emacs, गणित, प्रोग्रामिंग जैसे ब्लॉग विषयों के शब्दों को मिलाकर बने अर्थहीन वाक्य (gibberish) के रूप में निकलते हैं
  • मॉडल का order बढ़ाने पर वाक्य अधिक सुसंगत होते हैं, लेकिन 5 या उससे अधिक पर यह मूल पाठ को जस का तस उद्धृत करने लगता है और रचनात्मकता गायब हो जाती है
  • बड़े language models (LLM) के दौर में भी, ऐसे सरल Markov models की संरचनात्मक स्पष्टता भाषा-उत्पादन के सिद्धांतों को समझने के लिए एक अच्छा शुरुआती बिंदु मानी जाती है

Mark V. Shaney Junior प्रोग्राम का अवलोकन

  • Mark V. Shaney Junior 1980 के दशक के Usenet पर सक्रिय एक आभासी उपयोगकर्ता Mark V. Shaney की नकल करने वाला text generator है
    • मूल प्रोग्राम Markov मॉडल का उपयोग करके पोस्ट अपने-आप जनरेट करता था
    • यह implementation उसी विचार का सरल किया गया minimal version है, जिसे GitHub पर public किया गया है
  • पूरा code लगभग 30 lines of Python का है और इसमें efficiency से अधिक simplicity को प्राथमिकता दी गई है
    • Markov मॉडल से पहली बार परिचित होने वाला व्यक्ति भी इसे 20 मिनट के भीतर समझ सकता है

शौक के रूप में प्रयोगात्मक प्रोग्रामिंग

  • लेखक किसी खास समस्या को हल करने के बजाय ideas explore करने के उद्देश्य से programming करना पसंद करता है
    • अलग-अलग state spaces वाले Markov chains पर कई बार प्रयोग किए गए
    • ऐसे experimental code को व्यवस्थित करके GitHub या Codeberg पर साझा किया गया
  • Mark V. Shaney Junior भी ऐसे ही प्रयोगों में से एक है, जिसे थोड़ा निखारकर public किया गया

ब्लॉग डेटा का उपयोग करके text generation

  • मॉडल को पहले Charles Dickens की A Christmas Carol पर train करके test किया गया, फिर
    24 साल के ब्लॉग पोस्ट्स (200 से अधिक, लगभग 2 लाख शब्द) को input data के रूप में इस्तेमाल किया गया
    • comments (लगभग 40 हजार शब्द) को शामिल नहीं किया गया
  • जनरेट किए गए वाक्य programming commands, mathematical terms, editor commands आदि के मिश्रण से बने अतार्किक वाक्य के रूप में निकलते हैं
    • उदाहरण: Emacs commands, Lisp code, और mathematical terms के random संयोजन वाले वाक्य
  • कुछ वाक्य ब्लॉग की अलग-अलग पोस्ट्स से शब्द लेकर अर्थहीन संयोजन बनाते हैं
    • उदाहरण: “Lisp source file” और “self-esteem” अलग पोस्ट्स से लेकर जोड़े गए

Markov गुण और algorithmic structure

  • default setting trigram (3-word) आधारित है, जिसमें
    पहले दो शब्दों को key और तीसरे शब्द को value के रूप में रखने वाली map structure का उपयोग होता है
  • text generation process
    • किसी random शब्द-युग्म का चयन → संभावित अगले शब्दों में से एक को समान प्रायिकता से चुनना
    • नए चुने गए शब्द और पिछले शब्द से नया युग्म बनाकर प्रक्रिया दोहराना
    • आगे कोई शब्द न बचे या 100-word limit तक पहुँचने पर समाप्त करना
  • अगर वही trigram कई बार आता है, तो उसके अगले शब्द list में duplicate रूप में store होते हैं, जिससे
    उपस्थिति आवृत्ति के अनुपात में प्रायिकतापूर्ण चयन होता है
  • यह प्रक्रिया केवल वर्तमान state पर निर्भर probabilistic transition है,
    जिसे सूत्र के रूप में P(Xₙ₊₁ | Xₙ, Xₙ₋₁, …, X₁) = P(Xₙ₊₁ | Xₙ) लिखा गया है
    • यही memoryless विशेषता Markov property का मूल है

अतिरिक्त प्रयोग और model order adjustment

  • default order 2 है और इसे command-line argument से बदला जा सकता है
    • order को 3~4 तक बढ़ाने पर वाक्य अधिक सुसंगत और स्वाभाविक हो जाते हैं
    • उदाहरण: IRC commands और mathematical concepts के मिश्रण से बने अपेक्षाकृत तार्किक वाक्य
  • लेकिन order को 5 तक बढ़ाने पर मूल पाठ की सीधी नकल करने की प्रवृत्ति दिखती है, जिससे
    creative gibberish गायब हो जाता है
  • शुरुआती prompt देकर भी text generate किया जा सकता है
    • उदाहरण: “Finally we” से शुरू होने वाला वाक्य देने पर,
      Emacs, MATLAB, GNU bash आदि के शब्दों से मिश्रित लंबा वाक्य बनता है

सरल मॉडल का महत्व

  • 2025 तक large language models (LLM) मुख्यधारा में हैं, लेकिन
    Markov मॉडल global structure या long-term dependencies को पकड़ नहीं पाते
  • फिर भी, सरल design और implementation की स्पष्टता के कारण
    यह language generation के सिद्धांत सीखने के लिए एक introductory model के रूप में मूल्यवान है
  • लेखक इसे language models का ‘Hello, world’ कहता है

1 टिप्पणियां

 
GN⁺ 2025-12-15
Hacker News की राय
  • Markov Model एक state machine का statistical version है, जो सिर्फ वर्तमान state के आधार पर अगला token probabilistically generate करता है
    सार्थक चर्चा के लिए state और token के बीच संबंध को स्पष्ट रूप से परिभाषित करना ज़रूरी है
    उदाहरण के लिए, अगर state आख़िरी k observations के function के रूप में परिभाषित हो, तो इसे k-order Markov Chain कहा जाता है
    RNN को इसका expanded form माना जा सकता है, जहाँ state को पिछले states और हाल के tokens के function के रूप में परिभाषित किया जाता है
    state transition probabilities deterministic भी हो सकती हैं और probabilistic भी, और context length को भी variable रूप में परिभाषित किया जा सकता है
    लेकिन हर Markov Model learnable नहीं होता

    • “learnable” से आपका क्या मतलब है, यह जानने की उत्सुकता है
  • याद है कि 1992 में Egghead Software से मैंने ऐसा एक program 3 डॉलर में खरीदा था
    मैंने उसमें अपनी 5 साल की diary जैसी लिखाई डाली थी और output देखकर हँसा था
    पुराने उदाहरण के तौर पर Babble 1.0.20 और उससे जुड़ी forum post Software Spotlight: Babble देखी जा सकती है

  • यह पोस्ट देखकर मैंने भी Markov model के साथ प्रयोग किया
    शुरुआत character level से की, लेकिन 2nd-order model पर जाने से ज़्यादा फ़र्क नहीं पड़ा
    3rd-order (trigram) पर जाने पर यह थोड़ा ज़्यादा natural लगा
    उसके बाद BPE(Byte Pair Encoding) से tokenized text पर 1st-order Markov model लगाया, तो result थोड़ा ज़्यादा consistent था
    लेकिन 2nd-order पर बढ़ाते ही इसने मूल text को ज्यों का त्यों copy कर दिया — क्योंकि BPE ने repeated tokens हटा दिए थे, जिससे transitions deterministic हो गए
    token count को limit करने पर (जैसे 894 → 800) यह फिर non-deterministic हो गया, और text थोड़ा ज़्यादा natural लगा
    बहुत high order (जैसे 5th-order) पर जाने पर text सूखा और सिर्फ़ facts गिनाने जैसा लगने लगता है
    कुल मिलाकर Markov model simple है, लेकिन experiment करने के लिए काफ़ी मज़ेदार tool है

    • मैंने भी ऐसा ही कुछ किया था, और output आधा मज़ेदार बेतुकी बात, आधा original text की copy-paste था
      लगता है कि जिन chains में अगला token सिर्फ़ एक ही है, उन्हें हटाने से सुधार हो सकता है, लेकिन इससे grammatical structure भी मिटने का ख़तरा है
      लंबी single chains से बचने का बेहतर तरीका खोज रहा हूँ
    • ‘सूखा’ result से बचने के लिए 5-word limit को लचीले तरीके से adjust करना ही trick है
      अगर possible path सिर्फ़ एक हो, तो उसे 4 words तक घटा देना चाहिए
    • ऐसे results देखकर कभी-कभी ऐसा अजीब सा एहसास होता है, मानो कुछ communicate करने की कोशिश कर रहा हो
      या फिर शायद हम अकेले हैं, और यह chaos में order खोजने की दिमाग़ी प्रवृत्ति है
  • मैंने भी पहले ऐसा ही एक प्रयोग किया था
    20 साल में लिखे गए fantasy और SF के करीब 5 लाख शब्द Markov model में डाले थे और 2~5-gram slider से adjust किया था
    जब भी inspiration चाहिए होती थी, यह एक ‘सपनों का कुआँ’ जैसा tool था जिसे मैं निकालकर देखता था
    यह बचपन में dictionary का कोई random page खोलकर लिखने के ideas ढूँढ़ने की आदत का विस्तार जैसा लगा

    • जानना चाहता हूँ कि क्या आपने कभी NaNoGenMo में भाग लिया है
      ऐसे corpus के साथ experiment करने पर यह काफ़ी मज़ेदार project बन सकता है
    • मैंने भी 2015 में अपने 20,000 tweets पर Markov model train करके एक Twitter bot बनाया था
      उसका presentation video भी है
    • मेरे पास भी 30 साल पुराने अधूरे novel drafts हैं, उन्हें इस तरह चलाकर देखना दिलचस्प हो सकता है
    • याद है कि Terry Davis ने भी कुछ ऐसा ही करने की कोशिश की थी
    • जिज्ञासा है कि इसे LLM के साथ कैसे किया जाए
      क्या मेरी पूरी personal writing पर train करके मेरा अपना model बनाया जा सकता है?
      कौन-सा model और tool इस्तेमाल करना चाहिए, और क्या system prompt के बिना भी यह मेरी writing style में लिख सकता है यह जानना चाहता हूँ
      आगे बढ़कर, क्या यह phone responses या Discord messages में भी natural तरीके से जवाब दे सकेगा, यह भी जानना चाहता हूँ
  • Markov Chain से बनी एक Harry Potter fanfic भी है
    उसका title है Harry Potter and the Portrait of What Looked Like a Large Pile of Ash
    इसे botnik.org के link पर देखा जा सकता है

    • समझ नहीं आता कि कोई उसे पढ़ना क्यों चाहेगा
      सिर्फ़ पहली पंक्ति देखकर ही वह खोखले text जैसा लगा
      मुझे लगता है कि उसमें इंसानों द्वारा लिखी गई सबसे खराब किताब से भी कम भावना और अर्थ है
  • “I Fed 24 Years of My Blog Posts to a Markov Model” जैसी कोशिशें तो कई LLMs पहले ही बार-बार कर चुके हैं

  • Barbara Cartwright जैसी लेखिका, जिसने 700 से ज़्यादा मिलते-जुलते romance novels लिखे, शायद Markov model से reproduce की जा सकती है

    • लेकिन वास्तव में फ़र्क किया जा सकेगा या नहीं, यह पता नहीं
      मेरी पत्नी भी कभी-कभी वही novel दोबारा खरीदकर पढ़ लेती है जो वह पहले पढ़ चुकी होती है
  • याद है कि 2000s के मध्य में IRC पर Markov chain bots देखे थे
    GPT आने से पहले उनसे बेहतर कुछ नहीं था

    • शायद आप MegaHAL या उसके कुछ बाद वाले Cobe की बात कर रहे हैं
    • मैंने भी 2000s में bitlbee के साथ ख़ुद एक बनाया था, वह सचमुच मज़ेदार समय था
  • यह असल में Markov model से ज़्यादा trigram model के क़रीब है
    अगर इसे 4-gram या उससे आगे बढ़ाया जाए, तो कहीं ज़्यादा natural वाक्य निकलेंगे
    पहले “infini-gram” नाम का एक बहुत बड़ा n-gram model research हुआ था, और सुना है कि कुछ domains में उसने LLM के क़रीब performance दिखाई थी

  • 24 साल के अनुभव और विचार साझा करने के लिए धन्यवाद
    आजकल के इस सिर्फ़ खपत और उत्तेजना से भरे दौर में, ऐसी सच्ची साझेदारी वाकई ख़ास बात है