2 पॉइंट द्वारा GN⁺ 2024-03-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Quiet-STaR एक तरीका है जो सही जवाब वाले QA dataset के बजाय सामान्य web text को learning signal बनाकर language model को बोलने से पहले internal rationale generate करने के लिए train करता है
  • मौजूदा STaR केवल उन rationales को चुनकर सीखता था जो सही जवाब तक पहुंचे, जबकि Quiet-STaR उन rationales को reward करता है जो future text prediction को बेहतर बनाते हैं और unstructured text में मौजूद implicit reasoning का इस्तेमाल करता है
  • हर token position पर rationales को parallel में sample किया जाता है, और rationale वाले व बिना rationale वाले predictions को मिलाकर actual next text को बेहतर match करने की दिशा में training होती है
  • Mistral 7B को OpenWebMath और C4 पर continue pretraining करने के बाद, task-specific fine-tuning के बिना GSM8K accuracy 5.9%→10.9% और CommonsenseQA 36.3%→47.2% तक बढ़ी
  • असर उन tokens पर ज्यादा दिखा जिन्हें predict करना कठिन था, और internal thoughts में इस्तेमाल token count जितना लंबा रहा, direct reasoning performance में improvement भी उतनी बढ़ने की प्रवृत्ति दिखी

सामान्य text को reasoning training का लक्ष्य बनाना

  • इंसान लिखते या बोलते समय थोड़ी देर रुककर सोचते हैं, और text के अर्थ का बड़ा हिस्सा वाक्यों के बीच छिपे कारणों और implications में होता है
  • मौजूदा reasoning-केंद्रित approaches मुख्यतः सवालों के जवाब देने या agent tasks पूरा करने पर केंद्रित रही हैं, लेकिन Quiet-STaR मानता है कि reasoning लगभग हर तरह के लेखन में implicit रूप से मौजूद होती है
  • implicit reasoning के उदाहरण इस प्रकार हैं
    • proof में explicitly न बताए गए intermediate steps
    • conversation में दूसरे व्यक्ति की mental state का अनुमान लगाने वाली theory

STaR को language modeling तक expand करना

  • STaR(Self-Taught Reasoner) एक तरीका है जिसमें question-answer dataset पर कुछ examples के आधार पर rationales sample किए जाते हैं, और केवल उन rationales से सीखा जाता है जो सही जवाब तक पहुंचते हैं, ताकि model बार-बार और कठिन problems solve कर सके
  • STaR की सीमा यह है कि यह high-quality QA dataset जैसे सावधानी से curated data पर निर्भर करता है
    • ऐसे datasets में केवल खास reasoning tasks ही शामिल किए जा सकते हैं
    • कई बार rationale खुद provide करना होता है या कोई specific reasoning task देना होता है
  • Quiet-STaR किसी खास math QA जैसे task के बजाय, बड़े पैमाने के internet text से future text का अनुमान लगाने में मदद करने वाले rationales generate करना language model को सिखाता है
  • यह approach “language models unsupervised multitask learners होते हैं” वाले language modeling paradigm की intuition पर बनी है

Training प्रक्रिया: think, talk, learn

  • Quiet-STaR तीन steps में काम करता है
    • think: text के हर token के बाद future text को explain करने वाले rationales parallel में generate करता है
    • talk: rationale होने और न होने पर next-token predictions को mix करता है
    • learn: REINFORCE-based reward के जरिए future text prediction में मदद करने वाले rationales की likelihood बढ़ाता है और नुकसान पहुंचाने वाले rationales को छोड़ देता है
  • Training के दौरान एक thought के लिए model START और END जैसे learnable meta tokens से thought की शुरुआत और अंत mark करता है
  • Rationale बनाने के बाद mixing head तय करता है कि उस rationale-based prediction को future token prediction में कितना शामिल किया जाए

हर token पर सोचने के लिए implementation challenges

  • सामान्य text में हर token के लिए rationale generate करना पड़ता है, इसलिए compute cost ज्यादा होती है
  • इसे कम करने के लिए string में सभी token positions पर rationales generate करने वाला per-token parallel sampling algorithm propose और implement किया गया
  • यह समस्या भी address की गई कि language model शुरुआत से internal thoughts generate या use करना नहीं जानता
    • thought की शुरुआत और अंत बताने वाले custom meta tokens introduce किए गए
    • model को यह सीखने दिया गया कि कब rationale generate करना है और कब उस rationale के आधार पर prediction करना है
  • केवल एक next token देखने वाली myopic training से बचने के लिए कई tokens आगे तक शामिल करने वाला non-myopic loss इस्तेमाल किया गया
  • extended teacher-forcing technique से individual next token से आगे के predictions को भी training में शामिल किया गया

Experiment setup और results

  • Experiments Mistral 7B पर Quiet-STaR apply करके किए गए
  • Continue pretraining के लिए web text datasets OpenWebMath और C4(Colossal Clean Crawled Corpus) इस्तेमाल हुए
  • Task-specific fine-tuning के बिना zero-shot direct reasoning performance बेहतर हुई
    • GSM8K: 5.9%→10.9%
    • CommonsenseQA: 36.3%→47.2%
  • GSM8K और CommonsenseQA दोनों में Quiet-STaR training के दौरान इस्तेमाल thought tokens की संख्या जितनी लंबी हुई, performance improvement लगातार बढ़ा
  • natural text में predict करना कठिन tokens की perplexity बेहतर हुई
  • Generated rationales ने खासकर predict करना कठिन tokens के लिए असंतुलित रूप से ज्यादा मदद की

Quiet-STaR का योगदान

  • Quiet-STaR curated reasoning tasks के बजाय विविध unstructured text data से reasoning सीखने के लिए STaR को generalize करता है
  • parallel sampling algorithm दिए गए string में हर token position पर rationales generate करने की training procedure को scalable बनाता है
  • thought की शुरुआत और अंत बताने वाले custom meta tokens का इस्तेमाल model को rationale generation और rationale-based prediction की timing सीखाने में किया जाता है
  • mixing head बाद में तय करता है कि किसी specific thought से आए next-token prediction को current prediction में कितना शामिल करना है
  • कई tokens आगे तक शामिल करने वाला language modeling loss thoughts के प्रभाव को बेहतर बनाता है
  • कई tasks में thoughts का इस्तेमाल करने पर, model उसी web text से train किए गए model की तुलना में कठिन tokens को बेहतर predict करता है, और लंबे thoughts में improvement ज्यादा होता है

1 टिप्पणियां

 
GN⁺ 2024-03-17
Hacker News की राय
  • उदाहरण के लिए, यह सहज रूप से स्वाभाविक लगता है कि 50 लेयर गहरा नेटवर्क प्रतीकात्मक सवालों पर लगभग 50 चरणों तक ही reasoning कर सकता है
    जो चीज़ इससे ज़्यादा जटिल दिखती है, वह इसलिए है क्योंकि model ने जिन एक या अधिक subspaces को सीखा है, उनमें वह 50 चरण करता है, और वह एक “चरण” इंसान के एक चरण से ज़्यादा काम भी कर सकता है
    इंसान उससे आगे भी reasoning कर सकते हैं, लेकिन इसके लिए वास्तविक सोच-विचार और मनन, और कभी-कभी notepad की ज़रूरत होती है
    ChatGPT से बिना किसी सोच या “कागज़” के 4-अंकीय गुणा सही करने की उम्मीद करना काफ़ी हैरान करने वाली बात है, और असल में ऐसे calculations मानसिक रूप से करने वाले लोग भी बहुत ज़्यादा नहीं होते

    • बात सही है, लेकिन autoregressive element को भी ध्यान में रखना चाहिए
      उदाहरण में model के एक run में 50 चरण हैं, और हर output token के लिए model एक बार run होता है
      इसलिए असल में model कितना “सोच” सकता है, इसकी गणना ज़्यादा जटिल है
      बेशक, एक token output हो जाने पर default settings में model उस token के लिए commit हो जाता है, लेकिन इसका मतलब यह नहीं कि आगे के token generate करते समय वह लगातार “सोच” नहीं रहा
      context और पिछले output tokens अगले model step का input होते हैं, इसलिए उन्हें आपके कहे हुए notepad की तरह देखा जा सकता है
    • यह paper उसी intuition का अनुसरण करते हुए synthetic tasks पर transformer की सीमाओं की जांच करता है। इसमें गुणा जैसे वे काम भी शामिल हैं जिनमें कई चरणों वाली reasoning चाहिए: https://arxiv.org/abs/2305.18654
      प्रयोगों के नतीजे संकेत देते हैं कि transformer large language models multi-step compositional reasoning को व्यवस्थित problem-solving capability के रूप में हल करने के बजाय, उसे linearized subgraph matching तक घटाकर हल करने की ओर झुकते हैं
      साथ ही, abstract multi-step reasoning problems पर एक theoretical argument के ज़रिए यह दिखाया गया है कि task complexity बढ़ने पर autoregressive generation का performance तेज़ी से गिर सकता है
    • यहां एक अहम detail, यानी tokens की संख्या, छूट रही है। network depth में 50 “steps” हों, तब भी अतिरिक्त tokens इस्तेमाल किए जा सकते हैं
      अगर मान लें कि tape खत्म नहीं होती, तो large language models के सिर्फ़ सरल operations तक सीमित रहने की कोई वजह नहीं है
    • backpropagation कैसे काम करता है, यह सोचें तो यह explanation बहुत समझ में नहीं आती। layers को केवल स्वतंत्र रूप से काम करने तक सीमित नहीं किया गया है
      model के autoregressive होने की बात सोचें, तब भी यह ठीक से फिट नहीं बैठता
  • Edsger Dijkstra की अंग्रेज़ी शैली बेहद सटीक थी, और उनकी मातृभाषा Dutch होने के बावजूद वे कई native speakers से बेहतर अंग्रेज़ी का उपयोग करते थे, ऐसा मुझे लगता है
    किसी EWD में उन्होंने याद किया था कि बचपन में उन्हें सिखाया गया था, “जब तक तुम्हें पहले से पता न हो कि वाक्य कैसे खत्म करोगे, बोलना शुरू मत करो”
    लगता है इन दोनों observations के बीच कोई causal relationship हो सकता है

    • युवावस्था में कुछ समय विदेश में रहते हुए मैंने language classes ली थीं, और उसी class में एक मध्यम आयु का आदमी था जिसकी नई भाषा बहुत कमजोर थी, लेकिन उसमें हमेशा लोगों को हंसाने की क्षमता थी
      मुझे जिज्ञासा थी कि वह ऐसा कैसे करता है, और एक दिन lunch साथ खाते समय उसने गंभीरता से समझाया
      उसने कहा कि वह एक भी sentence तब तक मुंह से नहीं निकालता जब तक उसे अपने दिमाग में पूरा बोल न ले; वह शब्दों को कई बार सोचकर sentence को तराशता है, सामने वाला कैसे react करेगा इसकी कल्पना करता है, और जब मनचाहा reaction दिखने लगता है तभी बोलता है
      वह सलाह साथ ही यह भी सीधे-सीधे बता रही थी कि मैं बिना सोचे बोलता हूं, और ऐसा लगा जैसे उसने वह सवाल ठीक से पढ़कर जवाब दिया हो जो मैंने पूछा ही नहीं था
      इस तरीके को आज़माने पर मेहनत के अनुपात में reward मिला, लेकिन मैं इसे आदत नहीं बना पाया, और आज भी मेरा मुंह अक्सर मेरे मन से आगे निकल जाता है
    • यह मेरे लिए तो नर्क जैसा लगता है। spontaneity और उस पल में मौजूद रहने का एहसास पूरी तरह खत्म हो जाने वाला तरीका है
      पहले मैं बोलने से पहले क्या कहना है, यह compulsively सोचने की कोशिश करता था, और सामाजिक रूप से awkward होने के बावजूद इससे बिल्कुल मदद नहीं मिली
      writing asynchronous होती है, इसलिए मुझे पसंद है क्योंकि उसमें विचारों को ठीक से व्यवस्थित और edit किया जा सकता है, लेकिन social situations में यह बड़ी बाधा बन जाता है
    • मुझे दो बातें दिखती हैं। पहली, writing और speaking अलग हैं। writing asynchronous है, इसलिए लिखने से पहले सोचा और सुधारा जा सकता है
      दूसरी, अपनी मातृभाषा के अलावा किसी भाषा में बोलने पर आप आगे क्या कहेंगे, इसके बारे में ज़्यादा गहराई से सोचते हैं। idioms कम होते हैं, meaning सही पहुंच रहा है या नहीं इस पर ज़्यादा ध्यान रहता है, और शायद सामने वाला बुरा मान जाए, इसको लेकर भी अधिक संवेदनशीलता होती है
      यह कोई नई बात भी नहीं है। science जैसे क्षेत्रों में भी बहुत काम French, German, Latin जैसी उन भाषाओं में हुआ है जो researchers की मातृभाषा नहीं थीं
      साथ ही, domain-specific terminology भी भूमिका निभाती है। अगर मैं बस कहूं “Kubernetes is een open-bron houder orkestratiesysteem voor het automatiseren van de inzet, schalen, en het beheer van zachte waren”, तो मेरी मातृभाषा वाले आधे श्रोता उलझ जाएंगे
    • मुझे उनके EWD पढ़ना पसंद है। उनके साथ काम कर चुके एक professor ने कभी बताया था कि वे exam में students से pen इस्तेमाल करवाते थे
      क्या वे students के mistakes करने की संभावना घटाना चाहते थे?
    • मैंने भी textbook से अंग्रेज़ी सीखी थी, और native speakers का “their, there, they’re” को रोज़मर्रा में गड़बड़ाना सबसे अजीब चीज़ों में से एक लगा
      मैंने सोचा भी नहीं था कि मैं ऐसी गलती कर सकता हूं, और यह मुझे ‘wet’ और ‘vet’ को confuse करने जैसा लगता है
      साफ़ है कि native और non-native speakers के language use में फर्क होता है
  • कुछ दिन पहले मुझे लगा कि बड़े language model-आधारित सिस्टमों में chain-of-thought inference pattern जिस तरह performance सुधारने में मदद करता है, वह Kahneman की Thinking, Fast and Slow में दिए गए मन के दो-सिस्टम मॉडल के साथ रखा जा सकता है
    मैंने किताब कई सालों से दोबारा नहीं पढ़ी है, लेकिन याद है कि कम मेहनत और कम computation वाली सोच के लिए हम मुख्यतः ‘System 1’ इस्तेमाल करते हैं। जैसे 1+1=? या “आसमान ____ है” जैसी चीज़ें
    दूसरी तरफ ‘System 2’ जानबूझकर, सचेत रूप से और ज्यादा cognitive load वाले कामों में इस्तेमाल होता है। बड़े multiplication, reasoning problems, tools का उपयोग, decision-making आम तौर पर—ऐसी चीज़ें जिनमें focus या दिमागी संसाधन चाहिए
    “बड़े language model stochastic parrots हैं, उनमें intelligence नहीं है” वाली आलोचना असल में इस observation जैसी लगती है कि model सिर्फ ‘System 1’ इस्तेमाल करने के लिए equipped हैं
    जब बड़े language model को step-by-step सोचने के लिए prompt किया जाता है, तो उसे अपने विचार लिखने के लिए workspace मिलता है और next token prediction में वह उन्हें फिर से consider करता है, इसलिए यह एक तरह का basic System 2, यानी deliberation के लिए sandbox बन जाता है
    इंसान भी System 2 इस्तेमाल करते समय अपने मन के सामने दुनिया का एक diorama पकड़े रखते हैं और simulate करते हैं कि किसी खास action पर environment कैसे react करेगा। दोस्त क्या जवाब देगा, metal plate force पर कैसे मुड़ेगी, code कैसे टूटेगा, tyre कैसे grip करेगा—यह सब कल्पना करके possibilities के tree को explore करते हैं और सबसे ज्यादा reward वाला action चुनते हैं
    मैं expert नहीं हूं, लेकिन लगता है इस paper ने भी मिलता-जुलता framework पहचाना है। खासकर robotics में दिखने वाले action models में आगे iterative deliberation/simulation mechanism शामिल हो सकता है

    • पहले ही बता दूं कि यह पूरी तरह गढ़ी हुई बात, गैर-वैज्ञानिक anecdote, या भोली/अपरिपक्व बात लग सकती है। अच्छी बात है कि किसी को इस पर विश्वास करने की जरूरत नहीं
      कुछ हफ्ते पहले, जब मैं पूरी तरह जागा हुआ भी नहीं था और सोया हुआ भी नहीं था, मैं एक ऐसे loop में चला गया जहां मैंने महसूस किया कि fast-thinking brain रोशनी की रफ्तार की तरह शब्द और concepts उगल रहा था, और slow-thinking brain उन्हें असली वाक्यों में बदल रहा था
      ऐसा लगा जैसे chain of thought को ideas की list के रूप में देखा जा रहा हो, और वह list absurdly तेजी से भरने के बाद, सावधानी से चुने गए शब्दों की list वाले एक proper “thought” में summarize हो गई
      उसके बाद से मैं यह मानने लगा हूं कि जिसे हम thought के रूप में पहचानते हैं, वह ठीक उससे पहले की brainstorming process से निकला selected output है
    • मैं यह नहीं कहूंगा कि बड़े language model में बिल्कुल भी intelligence नहीं है। क्योंकि वे prediction पर आधारित हैं, और मुझे लगता है जिसे हम intelligence के रूप में पहचानते हैं वह दरअसल prediction ability ही है। cortex भी prediction करने के लिए evolve हुआ है
      फिर भी intelligence सब-कुछ-या-कुछ-नहीं नहीं, बल्कि spectrum पर होती है। मेरी definition है “past experience के आधार पर future outcomes को सही ढंग से predict करने की क्षमता की degree”, और यह इस पर निर्भर करती है कि कोई biological या artificial system patterns पहचानने और predict करने के लिए कौन से mechanisms इस्तेमाल कर सकता है
      intelligence experience पर भी निर्भर करती है। जिसे experience नहीं किया, उसे recognize नहीं कर सकते और इसलिए predict भी नहीं कर सकते। हालांकि prediction ability और experience, दोनों को “intelligence” में मिलाने के बजाय उन्हें अलग करने वाली vocabulary हो तो बेहतर हो सकता है
      बड़े language model की prediction machinery और human brain की तुलना करें तो बहुत कुछ missing है। “बोलने से पहले सोचना” उनमें से एक है, और Q* approach या tree-of-thought methods इसमें मदद करेंगे
      thalamo-cortical loops जैसी recurrent structures को भी शायद बड़े language model/transformer approach में जोड़ा जा सके, लेकिन human-level ability में निर्णायक missing piece मुझे online learning लगता है। यानी act करना, उसका result देखना, और उससे सीखना
      मौजूदा approach से “किताबों से सीखा हुआ” AGI बनाया जा सकता है, लेकिन skills practice और experiments के बिना नहीं सीखी जा सकतीं। developer हो या कुछ और, सिर्फ किताब पढ़कर या दूसरों के बनाए outputs analyze करके नहीं सीखा जा सकता; अपनी predictions और actions के real world में पैदा हुए परिणामों को समझना और उनसे सीखना जरूरी है
    • Andrej Karpathy ने भी नवंबर 2023 के “[1hr Talk] Intro to Large Language Models” video में इसी किताब का हवाला देते हुए यही बात कही
      relevant part link: https://youtu.be/zjkBMFhNj_g?t=2120
    • क्या उस किताब के ज्यादातर दावे refute नहीं हो चुके? मेरा समझना है कि कुछ को author ने खुद भी refute किया है
      पढ़ने में मजेदार लगी थी और कई insights भी लगे, लेकिन बाद में उस field के एक दोस्त ने बताया कि किताब accurate नहीं है और author ने कुछ claims “withdraw” किए हैं
    • लोग अक्सर कहते हैं कि बड़े language model पहले पढ़े गए text या अपने response की किसी window के आधार पर reflexively शब्द—ठीक कहें तो token stream—बनाते हैं, इसलिए वे सच में सोचते नहीं। यह सच है
      लेकिन बोलते समय मुझे भी कभी-कभी ऐसा अनुभव होता है कि जब तक मैं कही हुई बात सुन न लूं, मुझे पता नहीं होता कि मैं क्या कहने वाला हूं
      कभी-कभी मैं दिमाग में phrasing आजमाते हुए सोच-विचार और plan करता हूं, लेकिन मेरा ज्यादातर हिस्सा बस token stream generate करने वाले बड़े language model जैसा लगता है
  • यह फिर एक reinforcement learning paper है जिसकी baseline बहुत खराब है। GSM8k में output format काफी specific है, लेकिन इसमें 0-shot non-instruction-tuned Mistral इस्तेमाल किया गया
    improvement के बाद accuracy 11% थी, लेकिन few-shot prompting 37% हासिल करता है[1]. GPT-4 prompting से करीब 97% तक जा सकता है
    [1]: https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderb...

    • गंभीर scientists के लिए known methods और baselines लेकर उन्हें improve करना भी अच्छा science है
      latest performance तक scale करना भी संभव होगा, लेकिन लक्ष्य simple setting में सिर्फ अपने बदलावों का असर measure करना हो सकता है
      कई system combinations को मिलाकर state-of-the-art performance निकालने का काम engineers पर छोड़ देना चाहिए
  • क्या इसका OpenAI के rumored Q*, यानी q-star model से संबंध है? इस paper के authors तो संबंधित नहीं लगते
    क्या बस नाम संयोग से overlap हो गया?

    • लगता है उसी hype वाले term पर wordplay किया है
    • मैंने भी यही सोचा। जिस STaR paper को इस paper ने extend किया है, वह 2022 में आया था, इसलिए कम से कम q-star के भी इस पर आधारित होने की संभावना है
      हालांकि Q का मतलब कुछ और भी हो सकता है
  • यह reasoning ability वाले AI को train करने में missing piece है
    ऐसे बहुत सारे tasks हैं जिनमें answer known है, लेकिन reasoning steps missing हैं। इस method से कम annotated data में उस ability तक पहुंचा जा सकता है
    दिलचस्प बात यह है कि generated thoughts इंसानों के लिए समझना मुश्किल हों, फिर भी सही जवाब पाने में कहीं ज्यादा मददगार हो सकते हैं
    अगर ऐसा हुआ, तो हमने अपने से ज्यादा intelligent कोई चीज़ बना ली होगी

  • आज सुबह prompt स्तर पर मूलतः कुछ ऐसा ही आज़माया था, लेकिन नतीजे बेहद खराब रहे। हालांकि मेरे दिमाग में कच्चा विचार इससे आगे का था: ऐसे control-flow meta tokens लाना, जो बड़े language models को अपने context को फिर से explore करने में मदद करें
    इस नज़रिए से context को एक self-editing structured mindmap के रूप में फिर से सोचा जा सकता है, और किसी खास समय T पर linear context उस mindmap exploration का अब तक का execution trace बन जाता है
    कुछ meta tokens के side effects हो सकते हैं, जैसे context के कुछ हिस्सों को highlight करना, structure करना, summarize करना, भूलना वगैरह
    इससे json जैसे syntax formats या LMQL-स्टाइल programming constructs के बिना भी native structured output, memory implementation आदि संभव हो सकते हैं
    मकसद सिर्फ बड़े language models को logic/reasoning क्षमता देना नहीं, बल्कि उन्हें अपना cognitive architecture बनाने के साधन देना है
    structured output में ... tokens का इस्तेमाल करके memory या scratchpad भी implement किया जाए, तो ऐसे cognitive structure की inspectability भी बोनस में मिल सकती है
    बेशक, इसे implement कैसे करना है, इसका मुझे बिल्कुल पता नहीं। मैं तो machine learning tourist हूँ

  • ये लोग अपने काम से लगभग 8 साल पहले आए, language modeling पर लागू RNN की learned adaptive computation paper [1] को cite नहीं करते
    [1] https://openreview.net/pdf?id=S1LVSrcge
    Microsoft के पास भी उसी समय image recognition के लिए कुछ ऐसा ही था। input के लिए CNN इस्तेमाल करते थे और classification stage में adaptive computation करते थे

  • evaluation में Base Mistral 7B का इस्तेमाल करना लगभग उचित नहीं है। Intel की एक team ने भी NeuralChat में बिल्कुल इसी तरह trick करने की कोशिश की थी https://huggingface.co/Intel/neural-chat-7b-v3#quantitative-...

  • “text के अर्थ का अधिकांश हिस्सा पंक्तियों के बीच छिपा होता है। अगर reader यह नहीं समझता कि document में ऐसे वाक्य क्यों आते हैं, तो उसकी समझ सतही ही रहती है” — यह बात मेरे पढ़ने के तरीके या मेरे जानने वाले ज़्यादातर लोगों के लिए सही नहीं लगती
    लगभग हमेशा हमारे पास एक world model होता है, और हम कुछ हद तक जानते हैं कि ऐसी पंक्तियाँ किताब में क्यों आई हैं
    fluid mechanics की textbook पढ़ते समय हो सकता है गणित समझ में न आए, लेकिन यह समझ आता है कि वे वाक्य theory सीखने में मदद करने वाले mathematical statements हैं और महत्वपूर्ण concepts सिखाने के लिए एक pattern follow करते हैं
    उदाहरण के लिए concepts पिछले concepts पर बनते हैं। Bernoulli equation इसलिए आती है क्योंकि उससे पहले energy conservation law था, और वह वहाँ इसलिए है क्योंकि माना जाता है कि मैं बाद वाली चीज़ समझता हूँ