এআই সনাক্তকরণে টোকেন সম্ভাবনা এবং লগ-সম্ভাব্যতা
Perplexity মনোযোগ কেড়ে নেয়, কিন্তু এর অন্তর্নিহিত গণিত হলো টোকেন সম্ভাবনা: model-এর next word-এর ওপর distribution আসলে কী ধারণ করে, কেন detection math raw probability-এর বদলে log space-এ চলে, এবং কীভাবে per-token score-এর একটি ধারাবাহিকতা এক সংখ্যায় পরিণত হয়।
আপনি যদি কোনো detector-কে জিজ্ঞেস করেন যে সে কীভাবে সেই স্কোরে পৌঁছাল, তার user interfaces-এর বেশিরভাগই আপনাকে একই উত্তর দেবে: একটি অনুচ্ছেদ, যেখানে কিছু শব্দ অন্যগুলোর তুলনায় গাঢ় ছায়ায় দেখানো থাকে। এই ছায়া কোনো অনুমান নয়। এটি passage-এর প্রতিটি token-এর সঙ্গে যুক্ত একটি সংখ্যা থেকে আসে, যা detector perplexity, burstiness, বা একটি চূড়ান্ত শতাংশে পৌঁছানোর আগেই গণনা করা হয়।
এটি একটি token probability, এবং প্রতিটি token probability ai detection তার ওপরই ভিত্তি করে, একেবারে ভিত্তি থেকে। detector যে কোনো সংখ্যক metrics report করবে, যার মধ্যে এই site-এ আমরা অন্যত্র যে দুটি নিয়ে আলোচনা করেছি সেগুলিও আছে, সেগুলো কেবল এই সংখ্যাগুলোর একটি ধারার ওপর করা arithmetic। যে স্তরের নিচে অধিকাংশ ব্যাখ্যা থেমে যায়, সেই স্তরেই আপনাকে ভাবতে হয় token আসলে কী, model-এর distribution তার ওপর কী বোঝায়, এবং কেন arithmetic raw probability-এর বদলে log space-এ চলে। অধিকাংশ ব্যাখ্যা সেখানেই থেমে যায়।
এর কোনোটিকেই অস্পষ্ট হয়ে থাকতে হয় না। একটি token, একটি probability distribution এবং একটি logarithm সাধারণ সরঞ্জাম, কোনো proprietary secret নয়, এবং এই একই তিনটি ধারণা AI detectors actually work কীভাবে, তা ব্যাখ্যা করে, raw text থেকে report-এর একটি একক সংখ্যায় পৌঁছানো পর্যন্ত।
Token Probability AI Detection: Distribution থেকে Score পর্যন্ত
Token probability ai detection তিনটি ধাপে কাজ করে। একটি language model, আগে যা এসেছে তার ভিত্তিতে, প্রতিটি সম্ভাব্য পরবর্তী token-এর জন্য একটি probability নির্ধারণ করে। এই per-token probabilities logarithm-এ রূপান্তরিত হয় এবং passage জুড়ে যোগ করা হয়, যা raw multiplication যে numerical problem-এর মুখোমুখি হয় তা প্রায় সঙ্গে সঙ্গেই এড়িয়ে যায়। এর ফলে যে sum পাওয়া যায়, সেটিকে average করে এবং rescale করে শেষ পর্যন্ত perplexity figure হিসেবে প্রকাশ পায় বা classifier-এর decision-এ ব্যবহৃত হয়। প্রতিটি ধাপই arithmetic-এর একটি নির্দিষ্ট, যাচাইযোগ্য অংশ, কোনো black box নয়।
একটি Token আসলে কী
একটি টোকেন কোনো শব্দ নয়। আধুনিক ভাষা মডেলগুলো byte-pair encoding-এর মতো একটি অ্যালগরিদম ব্যবহার করে পাঠ্যকে subword অংশে ভাগ করে, তাই 'the' এর মতো একটি সাধারণ শব্দ সাধারণত একটি টোকেন হয়, 'perplexity' এর মতো কম সাধারণ শব্দ দুই বা তিনটি অংশে বিভক্ত হয়, এবং একটি অপরিচিত নাম পৃথক অক্ষর পর্যন্ত ভেঙে যেতে পারে। সাধারণ ইংরেজির একটি অনুচ্ছেদ নির্ভরযোগ্যভাবে তার শব্দসংখ্যার চেয়ে বেশি অংশে tokenizes হয়, যা কোনো টুল আপনাকে যে word count জানায় তা বিশ্বাস করার আগে জানা মূল্যবান।
মডেলটি কখনোই শব্দকে পাঠকের মতো দেখে না। এটি পূর্ণসংখ্যার একটি ক্রম দেখে, যেখানে প্রতিটি সংখ্যা হলো সেই স্থির vocabulary-এর একটি index, যার সঙ্গে মডেলটি প্রশিক্ষিত হয়েছিল। token probability ai detection এই মুহূর্ত থেকে যা কিছু করে, তা ওই পূর্ণসংখ্যার ক্রমের ওপর কাজ করে, মূল অক্ষরসমষ্টির ওপর নয়, আর এটাই আংশিকভাবে কারণ যে একটি detector-এর অভ্যন্তরীণ কার্যপ্রণালী একজন মানুষ বাস্তবে কীভাবে একটি বাক্য পড়ে, তার সঙ্গে বিচ্ছিন্ন বলে মনে হতে পারে।
পরবর্তী টোকেনের ওপর মডেলের বণ্টন
একটি ক্রমের প্রতিটি অবস্থানে, একটি autoregressive ভাষা মডেল একটি prediction আউটপুট করে না। এটি তার সমগ্র vocabulary জুড়ে একটি পূর্ণ probability distribution আউটপুট করে, দশ হাজারেরও বেশি সংখ্যার একটি সমষ্টি যা একে একে যোগ হয়ে 1 হয়, এবং তার আগে যা কিছু এসেছে তার ভিত্তিতে সবচেয়ে সম্ভাব্য থেকে কম সম্ভাব্য পর্যন্ত প্রতিটি সম্ভাব্য পরবর্তী token-কে rank করে। একটি মডেলে 'the results of the' বাক্যাংশটি দিলে এটি সেই probability mass-এর বেশির ভাগ কয়েকটি সম্ভাব্য noun-এর মধ্যে বণ্টন করে, যেমন 'study,' 'experiment,' 'analysis,' আর 'marmalade' এর মতো কিছুর জন্য অত্যন্ত ক্ষুদ্র একটি অংশ নির্ধারণ করে।
একটি বাস্তব নথিতে যে token আসলে পরবর্তী হিসেবে দেখা যায়, তা সেই ranking-এর কোথাও অবস্থান করে, এবং তার assigned probability-ই হলো সেই কাঁচামাল, যেখান থেকে বাকি সবকিছু নির্মিত হয়। নিজের text তৈরি করা একটি model এই distribution-এর ওপর সরাসরি নির্ভর করতে পারে, বারবার শীর্ষের কাছাকাছি থেকে বেছে নিয়ে। অন্য কারও সম্পূর্ণ text পড়া একটি detector কেবল পরে, ঘটনার পর, জিজ্ঞাসা করতে পারে যে model বাস্তবে যে choice করা হয়েছিল, তার জন্য কত probability assign করত।
একটি সম্পূর্ণ অনুক্রমের সম্ভাবনা হলো তার আগে যা কিছু আছে, তা দেওয়া অবস্থায় প্রতিটি token-এর সম্ভাবনার গুণফল; যদি আমরা যৌথ সম্ভাবনার মানক নিয়ম ব্যবহার করে এই প্রতি-token প্রশ্নটিকে একটি সম্পূর্ণ নথির ওপর ধারাবাহিকভাবে প্রয়োগ করি, তবে চূড়ান্ত ফল হবে একটি একক সংখ্যা, যা বর্ণনা করে পুরো অনুচ্ছেদটি কতটা প্রত্যাশিত ছিল। এই গুণফলই সেই স্থান, যেখানে গণিত ভেঙে পড়তে শুরু করে, আর সেই কারণেই পরের অংশটির অস্তিত্ব আছে।
আপনার নিজস্ব পেপারকে মানবসদৃশ করুন
আপনার AI-সহায়তাপ্রাপ্ত লেখাকে রূপান্তর করুন এবং গুরুত্বপূর্ণ শব্দ বা উদ্ধৃতি স্পর্শ না করে সেটিকে মানবসদৃশ শোনান।
কেন Log-Likelihood কাঁচা সম্ভাবনাকে প্রতিস্থাপন করে
সম্ভাবনাগুলোকে একসঙ্গে গুণ করা গাণিতিকভাবে সঠিক, কিন্তু কয়েক ডজন token-এর পর তা বাস্তবে প্রায় অকেজো। প্রতিটি পৃথক সম্ভাবনা একের কম একটি ভগ্নাংশ, তাই চলমান গুণফল প্রতিবার আরেকটি token গুণ হলে ছোট হতে থাকে, এবং তা দ্রুত ছোট হয়। কয়েকশ token পরে, কাঁচা গুণফল এমনভাবে ক্ষুদ্র হয়ে যেতে পারে যে তা কম্পিউটার যে সবচেয়ে ছোট সংখ্যা উপস্থাপন করতে পারে, তারও নিচে নেমে যায়, ফলে তা ঠিক শূন্যে round down হয়ে যায়, এই ব্যর্থতার ধরনকে underflow বলা হয়।
একবার তা ঘটলে, সংখ্যাটি আর কোনো তথ্য বহন করে না। যে নথি কেবলমাত্র অসম্ভব ছিল এবং যে নথি ভয়াবহ, বিশৃঙ্খলভাবে অসম্ভব ছিল, উভয়ই একই শূন্যে পরিণত হয়, পরে তাদের আলাদা করার কোনো উপায় থাকে না। Logarithm এই সমস্যা সমাধান করে, কারণ কোনো গুণফলের logarithm তার logarithmগুলোর যোগফলের সমান, যা মৌলিক বীজগণিতের একটি পরিচয়। সাধারণ ঋণাত্মক সংখ্যার একটি ধারার যোগফল, ছোট ভগ্নাংশের একটি ধারাকে গুণ করার মতো underflow করে না, এবং উপরন্তু এটি গণনা করাও সস্তা।
| Passage length (illustrative) | Raw probability, a running product | Sum of log-probabilities |
|---|---|---|
| 12 token at an illustrative 0.1 each | 1 x 10 to the power of -12, still representable | প্রায় -27.6 |
| 350 token at an illustrative 0.1 each | 1 x 10 to the power of -350, underflows to exactly 0 | প্রায় -805.9 |
এটি একটি সরলীকৃত চিত্রণ। বাস্তব per-token সম্ভাবনাগুলি 0.1-এর সমতল মানে স্থির না থেকে অত্যন্ত ব্যাপকভাবে পরিবর্তিত হয়, কিন্তু সমস্যার দিকটি একেবারে সঠিক। একবার একটি কাঁচা গুণফল শূন্যে underflow করলে, detector-টির যে তুলনাটি আসলে দরকার, এই নথিটি সেইটির তুলনায় বেশি বা কম প্রত্যাশিত ছিল কি না, তা অসম্ভব হয়ে যায়। log-probabilities-এর যোগফল কখনও সেইভাবে ব্যর্থ হয় না। এটি দীর্ঘ অংশ যতই হোক না কেন, একটি নির্ভুল, সাধারণ, তুলনাযোগ্য সংখ্যা হিসেবেই থাকে, আর detectability raw probability space-এর বদলে log space-এ মাপা হয়, এটাই তার প্রকৃত কারণ।
Per-Token Scores থেকে Detection Score-এ
একটি অংশ জুড়ে log-probabilities যোগ করলে reference model-এর অধীনে নথিটির মোট log-likelihood পাওয়া যায়। token-এর সংখ্যা দিয়ে ভাগ করলে দৈর্ঘ্যের প্রভাব দূর হয় এবং প্রতি token-এ গড় log-likelihood থেকে যায়, যা অবশেষে পাঁচশো শব্দের একটি essay এবং পাঁচ হাজার শব্দের একটি thesis chapter-এর মধ্যে তুলনাযোগ্য একটি সংখ্যা। সেই গড়কে ঋণাত্মক করে exponentiate করলে perplexity score পাওয়া যায়, একটি metric যা এই cluster পৃথকভাবে perplexity আসলে কী মাপে শিরোনামের আলোচনায় সম্পূর্ণভাবে অন্তর্ভুক্ত করে।
একই per-sentence figures, যেগুলি একটি গড়ে সমতল করে না রেখে একটি নথি জুড়ে variation-এর জন্য অনুসরণ করা হয়, সেগুলিই burstiness কী থেকে গঠিত, যা perplexity থেকে সম্পর্কিত কিন্তু পৃথক একটি signal। উভয়ই উপরে বর্ণিত অভিন্ন per-token সংখ্যাগুলি থেকে শুরু হয়। তারা কেবল সেগুলির ওপর ভিন্ন arithmetic প্রয়োগ করে।
একটি সরল average এই কাঁচামাল ব্যবহারের একমাত্র উপায় নয়, এবং গবেষণা ইতিমধ্যে তার অনেক এগিয়ে গেছে। ICML 2023-এ Mitchell, Lee, Khazatsky, Manning এবং Finn কর্তৃক প্রকাশিত DetectGPT, একই probability function-এর একটি ভিন্ন বৈশিষ্ট্য থেকে কাজ করে: একটি language model থেকে sampled text এমন একটি অঞ্চলে অবস্থান করতে থাকে যেখানে সামান্য rewording log-probability-কে বাড়ানোর বদলে কমিয়ে দেয়, একটি pattern যাকে paper negative curvature বলে।
একটি classifier প্রশিক্ষণ দেওয়া বা watermark ব্যবহার করার বদলে, এই পদ্ধতি একটি passage-এ perturb করে, rewording-এর ধরনে সামান্য ভিন্নতা তৈরি করে, এবং তারপর একই model দিয়ে প্রতিটি variation পুনরায় score করে। paperটি এটিকে best zero-shot baseline-এর সঙ্গে তুলনা করে এবং পায় যে, 20-billion-parameter model দ্বারা generated text-এ, এই পদ্ধতি 0.95 AUROC অর্জন করে, যেখানে best zero-shot baseline 0.81 AUROC অর্জন করে।
একই distribution, detect করার বদলে watermark করার জন্য ব্যবহৃত
এ পর্যন্ত সবকিছু probability distribution-কে এমন কিছু হিসেবে দেখেছে যা পরে পড়া হয়। generation-এর মুহূর্তেও এটিকে স্পর্শ করা যায়, যা problemটিকে সম্পূর্ণভাবে উল্টে দেয়। Kirchenbauer, Geiping, Wen, Katz, Miers and Goldstein-এর 2023 সালের একটি method, প্রতিটি word উৎপন্ন হওয়ার আগে, আগে কী এসেছে তার hash-এর ভিত্তিতে, allowed token-এর একটি randomized shortlist নির্বাচন করে, এবং sampling-কে মৃদুভাবে সেই shortlist-এর দিকে steer করে। এই bias reader-এর কাছে invisible, এবং পরে original model-এ access ছাড়াই, text-এর একটি short span-এর উপর statistical test দিয়ে পুনরুদ্ধার করা যায়।
Google DeepMind-এর SynthID এই ধারণার একটি version production-এ নিয়ে এসেছে, এটি generation time-এ next-token probability score adjust করে এবং আজ Gemini app এবং web experience-এ live আছে। OpenAI একটি comparable system তৈরি করেছে এবং এটি ship করেনি। reporting আংশিকভাবে একটি survey-এর দিকে ইঙ্গিত করে, যেখানে প্রায় 30 percent ChatGPT user বলেছেন watermarking তাদের product কম ব্যবহার করতে বাধ্য করবে, পাশাপাশি এই উদ্বেগও ছিল যে একটি watermark paraphrasing-এর মধ্যে কতটা ভালোভাবে টিকে থাকবে।
একটি detector-এর report একটি shaded word বা একটি single percentage দেখায় এবং সেখানেই থেমে যায়, এটি যে distribution থেকে এসেছে তা কখনও দেখায় না। TextPulse-এর free perplexity checker আপনার নিজের draft-এর বিরুদ্ধে একই per-token scoring-এর একটি simplified version চালায়, যা secondhand verdict পড়ার চেয়ে একটি passage কোথায় অবস্থান করছে তা দেখার আরও direct উপায়।
দুটি পার্শ্ববর্তী পৃষ্ঠা এটি তুলে ধরে। ডিটেক্টরগুলো এখনও burstiness-এর ওপর নির্ভর করে কি না 2023 থেকে বদলেছে, এবং GPTZero কীভাবে এই একই সম্ভাবনাগুলোকে একটি স্কোরে রূপান্তর করে তা তার নিজস্ব পাতায় বর্ণনা করা হয়েছে।
এটি TextPulse-এর বাকি free tools-এর সঙ্গে অবস্থান করে, তাই একই খসড়া ছন্দ ও গঠন, পাশাপাশি শব্দ-স্তরের পূর্বানুমেয়তার জন্যও পরীক্ষা করা যায়, তা করতে এক ডজন আলাদা ট্যাব খোলার প্রয়োজন হয় না।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Token probability ai detection হলো প্রতিটি অন্য detection metric-এর নিচের স্তর। একটি language model একটি sequence-এ প্রতিটি token-কে একটি probability নির্ধারণ করে, একেকটি word-piece এক সময়ে, তার আগে যা কিছু এসেছে তার ভিত্তিতে। Perplexity, classifier score এবং report-এর percentage, এগুলো সবই পরে সেই সংখ্যাগুলোর sequence-এর ওপর করা arithmetic, আলাদা, স্বতন্ত্র কোনো measurement নয়।
PhD in natural language processing, with years spent building NLP applications end to end. Moe works on text analysis: lexical and syntactic structure, and what separates machine-generated prose from human prose statistically. He has been experimenting with computational linguistics since the early days of NLTK, spaCy and WordNet, and still writes most of his tooling in Python.