বার্ট (ভাষা মডেল)

**বাইডাইরেকশনাল এনকোডার রিপ্রেজেন্টেশনস ফ্রম ট্রান্সফরমারস** (**বার্ট**) হলো একটি ভাষা মডেল। এটি ২০১৮ সালের অক্টোবরে গুগলের গবেষকরা প্রকাশ্যে আনেন। এই মডেলটি মূলত ট্রান্সফরমারের ‘শুধুমাত্র-এনকোডার’ আর্কিটেকচারের ওপর ভিত্তি করে তৈরি। এটি ‘সেল্ফ-সুপারভাইজড’ বা স্ব-তত্ত্বাবধায়িত শিক্ষার মাধ্যমে যেকোনো লেখাকে ভেক্টরের একটি অনুক্রম হিসেবে উপস্থাপন করতে পারে। আধুনিক বৃহৎ ভাষা মডেলগুলোর উন্নয়নে বার্ট বৈপ্লবিক পরিবর্তন এনেছে। ২০২০ সাল থেকে প্রাকৃতিক ভাষা প্রক্রিয়াকরণ বা এনএলপি সংক্রান্ত গবেষণায় বার্ট একটি সর্বজনীন মানদণ্ড বা ‘বেসলাইন’ হিসেবে বিবেচিত হয়ে আসছে।

বার্ট-কে মূলত 'মাস্কড টোকেন প্রেডিকশন' এবং 'নেক্সট সেন্টেন্স প্রেডিকশন'-এর মাধ্যমে প্রশিক্ষণ দেওয়া হয়। এই প্রশিক্ষণের ফলে বার্ট টোকেনগুলোর প্রাসঙ্গিক এবং সুপ্ত উপস্থাপনা শিখতে পারে, যা অনেকটা ELMo এবং GPT-2-এর মতো। এটি প্রাকৃতিক ভাষা প্রক্রিয়াকরণের বিভিন্ন ক্ষেত্রে যেমন— সহ-নির্দেশনা সমাধান (coreference resolution) এবং বহুার্থকতা (polysemy) নিরসনে ব্যবহৃত হয়। এটি ইএলএমও -এর সীমাবদ্ধতাগুলো কাটিয়ে উঠতে সাহায্য করেছে এবং "বার্টোলজি" নামক একটি নতুন গবেষণাক্ষেত্রের জন্ম দিয়েছে, যা বার্ট আসলে কী শেখে তা ব্যাখ্যা করার চেষ্টা করে।

বার্ট (BERT) মূলত ইংরেজি ভাষায় দুটি মডেল আকারে বাস্তবায়িত হয়েছিল: বার্ট-বেস (BERTBASE - ১১০ মিলিয়ন প্যারামিটার) এবং বার্ট-লার্জ (BERTLARGE - ৩৪০ মিলিয়ন প্যারামিটার)। উভয় মডেলই টরন্টো বুককর্পাস (৮০০ মিলিয়ন শব্দ) এবং ইংরেজি উইকিপিডিয়া (২,৫০০ মিলিয়ন শব্দ) ব্যবহার করে প্রশিক্ষণ দেওয়া হয়েছিল। এর 'ওয়েট' (weights) বা গাণিতিক মানগুলো গিটহাব-এ উন্মুক্ত করা হয়েছে। ১১ মার্চ, ২০২০-এ আরও ২৪টি ছোট মডেল প্রকাশ করা হয়, যার মধ্যে সবচেয়ে ছোটটি হলো বার্ট-টাইনি (BERTTINY), যাতে মাত্র ৪ মিলিয়ন প্যারামিটার রয়েছে।

## আর্কিটেকচার (Architecture)

বার্ট হলো একটি "শুধুমাত্র-এনকোডার" (encoder-only) ট্রান্সফরমার আর্কিটেকচার। উচ্চতর স্তরে, বার্ট ৪টি মডিউল নিয়ে গঠিত:

* **টোকেনাইজার (Tokenizer):** এই মডিউলটি ইংরেজি টেক্সটের একটি অংশকে পূর্ণসংখ্যার একটি অনুক্রমে ("টোকেন") রূপান্তরিত করে।
* **[[Word embedding|এমবেডিং (Embedding)]]:** এই মডিউলটি টোকেনগুলোর অনুক্রমকে বাস্তব-মানসম্পন্ন ভেক্টরের একটি অ্যারেতে রূপান্তরিত করে যা টোকেনগুলোকে উপস্থাপন করে। এটি মূলত বিচ্ছিন্ন টোকেনগুলোকে একটি নিম্ন-মাত্রিক ইউক্লিডীয় স্পেসে রূপান্তর করার প্রক্রিয়া।
* **এনকোডার (Encoder):** এটি সেলফ-অ্যাটেনশন (self-attention) বিশিষ্ট ট্রান্সফরমার ব্লকের একটি স্তূপ, তবে এতে কোনো 'কজাল মাস্কিং' (causal masking) থাকে না।
* **টাস্ক হেড (Task head):** এই মডিউলটি টোকেন প্রকারগুলোর ওপর একটি সম্ভাব্যতার বিন্যাস (probability distribution) তৈরির মাধ্যমে চূড়ান্ত রিপ্রেজেন্টেশন ভেক্টরগুলোকে পুনরায় ওয়ান-হট এনকোডেড টোকেনে রূপান্তর করে। এটিকে একটি সাধারণ ডিকোডার বা "আন-এমবেডিং লেয়ার" হিসেবেও দেখা যেতে পারে।

প্রাক-প্রশিক্ষণের (pre-training) জন্য টাস্ক হেড প্রয়োজন, তবে "ডাউনস্ট্রিম টাস্ক" (downstream tasks) যেমন— প্রশ্নোত্তরের উত্তর প্রদান বা আবেগের শ্রেণিবিন্যাসের (sentiment classification) জন্য এটি প্রায়ই অপ্রয়োজনীয়। পরিবর্তে, টাস্ক হেডটি সরিয়ে ফেলে সেখানে সংশ্লিষ্ট কাজের উপযোগী একটি নতুন মডিউল স্থাপন করা হয় এবং সেই নতুন মডিউলটিকে 'ফাইনটিউন' (finetune) করা হয়। মডেলের ল্যাটেন্ট ভেক্টর রিপ্রেজেন্টেশন সরাসরি এই নতুন মডিউলে প্রবেশ করানো হয়, যা দক্ষ স্থানান্তর শিক্ষা (transfer learning)-এর সুযোগ করে দেয়।

### এমবেডিং (Embedding)
এই বিভাগটি বার্ট-বেস (BERTBASE)-এ ব্যবহৃত এমবেডিং বর্ণনা করে। বার্ট-লার্জ (BERTLARGE) এর গঠনও একই রকম, তবে এটি আকারে বড়।

বার্টের টোকেনাইজার হলো 'ওয়ার্ডপিস' (WordPiece), যা বাইট-পেয়ার এনকোডিং-এর মতো একটি সাব-ওয়ার্ড কৌশল। এর শব্দভাণ্ডারের (vocabulary) আকার ৩০,০০০ এবং এই শব্দভাণ্ডারে নেই এমন যেকোনো টোকেনকে `[UNK]` ("unknown") দ্বারা প্রতিস্থাপিত করা হয়।

প্রথম স্তরটি হলো এমবেডিং লেয়ার, যা তিনটি উপাদানে গঠিত: টোকেন টাইপ এমবেডিং, পজিশন এমবেডিং এবং সেগমেন্ট টাইপ এমবেডিং।

* **টোকেন টাইপ (Token type):** টোকেন টাইপ হলো একটি সাধারণ এমবেডিং লেয়ার, যা টোকেন টাইপের ওপর ভিত্তি করে একটি ওয়ান-হট ভেক্টরকে ঘন ভেক্টরে (dense vector) রূপান্তর করে।
* **পজিশন (Position):** পজিশন এমবেডিং একটি টোকেনের অনুক্রমিক অবস্থানের ওপর ভিত্তি করে তৈরি হয়। বার্ট 'অ্যাবসলিউট পজিশন এমবেডিং' (absolute position embeddings) ব্যবহার করে, যেখানে একটি অনুক্রমের প্রতিটি অবস্থান একটি বাস্তব-মানসম্পন্ন ভেক্টরে ম্যাপ করা হয়। ভেক্টরের প্রতিটি মাত্রা একটি সাইনোসয়ডাল ফাংশন (sinusoidal function) নিয়ে গঠিত, যা ইনপুট হিসেবে অনুক্রমের অবস্থানকে গ্রহণ করে।
* **সেগমেন্ট টাইপ (Segment type):** মাত্র ০ বা ১-এর একটি শব্দভাণ্ডার ব্যবহার করে এই এমবেডিং স্তরটি একটি ঘন ভেক্টর তৈরি করে। টোকেনটি ইনপুটের প্রথম নাকি দ্বিতীয় টেক্সট সেগমেন্টের অন্তর্ভুক্ত, তার ওপর ভিত্তি করে এটি নির্ধারিত হয়। অন্য কথায়, বিশেষ টোকেন `[SEP]`-এর পরে আসা সমস্ত টোকেন হলো টাইপ-১, আর এর আগের সব টোকেন হলো টাইপ-০।

এই তিনটি এমবেডিং ভেক্টরকে একত্রে যোগ করা হয়, যা তথ্যের এই তিনটি উপাদানের একটি ফাংশন হিসেবে টোকেনের প্রাথমিক উপস্থাপনা (representation) নির্দেশ করে। এমবেডিংয়ের পরে, ভেক্টর উপস্থাপনাটিকে একটি LayerNorm অপারেশনের মাধ্যমে স্বাভাবিক (normalize) করা হয়, যা প্রতিটি ইনপুট টোকেনের জন্য একটি ৭৬৮-মাত্রিক (768-dimensional) ভেক্টর আউটপুট দেয়। এরপর, এই রিপ্রেজেন্টেশন ভেক্টরগুলোকে ১২টি ট্রান্সফরমার এনকোডার ব্লকের মধ্য দিয়ে পাঠানো হয় এবং একটি সাধারণ 'অ্যাফাইন ট্রান্সফরমেশন' (affine transformation) লেয়ার ব্যবহার করে পুনরায় ৩০,০০০-মাত্রিক শব্দভাণ্ডার স্পেসে ডিকোড করা হয়।
### আর্কিটেকচারাল ফ্যামিলি (Architectural family)
বার্টের (BERT) এনকোডার স্ট্যাকে মূলত ২টি মুক্ত প্যারামিটার (free parameters) রয়েছে: $L$ বা স্তরের সংখ্যা (number of layers), এবং $H$ বা 'হিডেন সাইজ' (hidden size)। এতে সব সময় $H/64$ সংখ্যক সেলফ-অ্যাটেনশন হেড থাকে এবং ফিড-ফরোয়ার্ড বা ফিল্টার সাইজ সব সময় $4H$ হয়। এই দুটি সংখ্যা পরিবর্তনের মাধ্যমে বার্ট মডেলের একটি সম্পূর্ণ পরিবার বা 'ফ্যামিলি' পাওয়া সম্ভব।

বার্টের ক্ষেত্রে:

* 'ফিড-ফরোয়ার্ড সাইজ' (feed-forward size) এবং 'ফিল্টার সাইজ' (filter size) সমার্থক। উভয়ই ফিড-ফরোয়ার্ড নেটওয়ার্কের মধ্যবর্তী স্তরের ডাইমেনশন বা মাত্রার সংখ্যা নির্দেশ করে।
* 'হিডেন সাইজ' (hidden size) এবং 'এমবেডিং সাইজ' (embedding size) সমার্থক। উভয়ই একটি টোকেনকে উপস্থাপন করতে ব্যবহৃত বাস্তব সংখ্যার পরিমাণ নির্দেশ করে।

এনকোডার স্ট্যাকের সংকেত বা নোটেশনকে L/H আকারে লেখা হয়। উদাহরণস্বরূপ, বার্ট-বেস (BERTBASE)-কে ১২L/৭৬৮H, বার্ট-লার্জ (BERTLARGE)-কে ২৪L/১০২৪H এবং বার্ট-টাইনি (BERTTINY)-কে ২L/১২৮H হিসেবে লেখা হয়।
## প্রশিক্ষণ (Training)
### প্রাক-প্রশিক্ষণ (Pre-training)
বার্ট-কে (BERT) একই সাথে দুটি কাজের ওপর ভিত্তি করে প্রাক-প্রশিক্ষিত করা হয়েছিল:

* **মাস্কড ল্যাঙ্গুয়েজ মডেলিং (MLM):** এই পদ্ধতিতে বার্ট শব্দের একটি অনুক্রম গ্রহণ করে, যেখানে একটি শব্দকে এলোমেলোভাবে পরিবর্তন বা আড়াল ("মাস্ক") করে দেওয়া হয়। বার্ট সেই পরিবর্তিত বা আড়াল করা আসল শব্দটি অনুমান করার চেষ্টা করে। উদাহরণস্বরূপ, "The cat sat on the `[MASK]`" বাক্যটিতে বার্ট-কে "mat" শব্দটি অনুমান করতে হবে। এটি বার্ট-কে দ্বিমুখী প্রেক্ষাপট (bidirectional context) শিখতে সাহায্য করে, যার অর্থ এটি কেবল বাম-থেকে-ডানে বা ডান-থেকে-বামে নয়, বরং উভয় দিক থেকে শব্দের পারস্পরিক সম্পর্ক বুঝতে পারে।

* **নেক্সট সেন্টেন্স প্রেডিকশন (NSP):** এই পদ্ধতিতে বার্ট-কে একটি বাক্যের পর অন্য একটি বাক্য যৌক্তিকভাবে আসে কি না তা অনুমান করার প্রশিক্ষণ দেওয়া হয়। উদাহরণস্বরূপ, "The cat sat on the mat" এবং "It was a sunny day"—এই দুটি বাক্য দেওয়া হলে বার্ট-কে সিদ্ধান্ত নিতে হয় যে দ্বিতীয় বাক্যটি প্রথমটির একটি বৈধ ধারাবাহিকতা কি না। এটি বার্ট-কে বাক্যগুলোর মধ্যকার সম্পর্ক বুঝতে সাহায্য করে, যা প্রশ্নোত্তর প্রদান বা নথি শ্রেণিবিন্যাসের (document classification) মতো কাজের জন্য অত্যন্ত গুরুত্বপূর্ণ।

#### মাস্কড ল্যাঙ্গুয়েজ মডেলিং (MLM)

মাস্কড ল্যাঙ্গুয়েজ মডেলিং-এ ১৫% টোকেনকে মাস্কড-প্রেডিকশন কাজের জন্য এলোমেলোভাবে নির্বাচন করা হয়। প্রশিক্ষণের লক্ষ্য হলো প্রদত্ত প্রেক্ষাপট থেকে সেই আড়াল করা টোকেনটি অনুমান করা। বিস্তারিতভাবে বললে, নির্বাচিত টোকেনটি:

* ৮০% ক্ষেত্রে একটি `[MASK]` টোকেন দ্বারা প্রতিস্থাপিত হয়,
* ১০% ক্ষেত্রে একটি এলোমেলো শব্দ টোকেন দ্বারা প্রতিস্থাপিত হয়,
* ১০% ক্ষেত্রে কোনো পরিবর্তন করা হয় না।

নির্বাচিত সব টোকেনকে মাস্কড না করার কারণ হলো 'ডেটাসেট শিফট' (dataset shift) সমস্যা এড়ানো। যখন প্রশিক্ষণের সময় দেখা ইনপুটের বিন্যাস এবং বাস্তব প্রয়োগের (inference) সময়ের ইনপুট বিন্যাসের মধ্যে বড় পার্থক্য থাকে, তখন এই সমস্যা দেখা দেয়। একটি প্রশিক্ষিত বার্ট মডেল শব্দ উপস্থাপনার (যেমন Word2Vec) কাজে ব্যবহৃত হতে পারে, যেখানে বাক্যগুলোতে কোনো `[MASK]` টোকেন থাকে না। পরবর্তীতে দেখা গেছে যে, প্রশিক্ষণের লক্ষ্য যত বৈচিত্র্যময় হয়, ফলাফল সাধারণত তত ভালো হয়।

একটি উদাহরণ হিসেবে "my dog is cute" বাক্যটি বিবেচনা করা যাক। এটি প্রথমে "my1 dog2 is3 cute4"-এর মতো টোকেনে বিভক্ত হবে। এরপর একটি এলোমেলো টোকেন বেছে নেওয়া হবে। ধরা যাক চতুর্থ টোকেন "cute4" বেছে নেওয়া হলো। এখন তিনটি সম্ভাবনা থাকে:

* ৮০% সম্ভাবনা অনুযায়ী টোকেনটি মাস্কড হবে: "my1 dog2 is3 `[MASK]`4";
* ১০% সম্ভাবনা অনুযায়ী টোকেনটি একটি এলোমেলো টোকেন (যেমন "happy") দ্বারা প্রতিস্থাপিত হবে: "my1 dog2 is3 happy4";
* ১০% সম্ভাবনা অনুযায়ী কোনো পরিবর্তন হবে না: "my1 dog2 is3 cute4"।

ইনপুট টেক্সট প্রক্রিয়াকরণের পর, মডেলের ৪র্থ আউটপুট ভেক্টরটি ডিকোডার লেয়ারে পাঠানো হয়, যা ৩০,০০০-মাত্রিক শব্দভাণ্ডারের ওপর একটি সম্ভাব্যতার বিন্যাস প্রদান করে।

#### নেক্সট সেন্টেন্স প্রেডিকশন (NSP)

দুটি বাক্য দেওয়া হলে মডেলটি অনুমান করে যে তারা প্রশিক্ষণের তথ্যভাণ্ডারে (training corpus) ধারাবাহিকভাবে ছিল কি না। আউটপুট হিসেবে এটি হয় `[IsNext]` অথবা `[NotNext]` প্রদান করে। প্রশিক্ষণের সময় অ্যালগরিদমটি কখনো একই অনুচ্ছেদ থেকে দুটি ধারাবাহিক বাক্য সংগ্রহ করে, আবার কখনো দুটি সম্পূর্ণ ভিন্ন অনুচ্ছেদ থেকে বাক্য সংগ্রহ করে।
প্রথম বাক্যটি একটি বিশেষ টোকেন `[CLS]` ( "classify"-এর সংক্ষিপ্ত রূপ) দিয়ে শুরু হয়। বাক্য দুটিকে আলাদা করতে অপর একটি বিশেষ টোকেন `[SEP]` ( "separate"-এর সংক্ষিপ্ত রূপ) ব্যবহার করা হয়। বাক্য দুটি প্রক্রিয়াকরণের পর, `[CLS]` টোকেনের জন্য প্রাপ্ত চূড়ান্ত ভেক্টরটি একটি লিনিয়ার লেয়ারে পাঠানো হয়, যা বাইনারি ক্লাসিফিকেশনের মাধ্যমে `[IsNext]` অথবা `[NotNext]` ফলাফল প্রদান করে।

উদাহরণস্বরূপ:

* যদি ইনপুট হয়: "`[CLS]` my dog is cute `[SEP]` he likes playing `[SEP]`", তবে মডেলটির `[IsNext]` অনুমান করা উচিত।
* যদি ইনপুট হয়: "`[CLS]` my dog is cute `[SEP]` how do magnets work `[SEP]`", তবে মডেলটির `[NotNext]` অনুমান করা উচিত।

### ফাইন-টিউনিং (Fine-tuning)

বার্ট মূলত প্রাকৃতিক ভাষা প্রক্রিয়াকরণের (NLP) বিভিন্ন ক্ষেত্রে ব্যবহারের জন্য একটি সাধারণ প্রাক-প্রশিক্ষিত মডেল হিসেবে তৈরি করা হয়েছে। অর্থাৎ, প্রাক-প্রশিক্ষণের পর বার্ট-কে স্বল্প রিসোর্স ও ছোট ডেটাসেট ব্যবহার করে ফাইন-টিউন করা সম্ভব। এর মাধ্যমে নির্দিষ্ট কিছু কাজ যেমন— প্রাকৃতিক ভাষা অনুমান (natural language inference), টেক্সট শ্রেণিবিন্যাস, এবং সিকোয়েন্স-টু-সিকোয়েন্স ভিত্তিক ভাষা উৎপাদন কাজ যেমন— প্রশ্নোত্তর প্রদান ও কথোপকথনমূলক প্রতিক্রিয়া তৈরিতে এর কার্যক্ষমতা সর্বোচ্চ করা যায়।

বার্টের মূল গবেষণাপত্রে প্রকাশিত ফলাফল অনুসারে, খুব সামান্য ফাইন-টিউনিং (বার্ট-লার্জের জন্য ১ ঘণ্টা ক্লাউড টিপিইউ-তে) করেই এটি বেশ কিছু প্রাকৃতিক ভাষা বোধগম্যতা (NLU) সংক্রান্ত কাজে অত্যাধুনিক (state-of-the-art) সাফল্য অর্জন করেছে:

* GLUE (General Language Understanding Evaluation) টাস্ক সেট (৯টি কাজের সমন্বয়);
* SQuAD (Stanford Question Answering Dataset) v1.1 এবং v2.0;
* SWAG (Situations With Adversarial Generations)।

মূল গবেষণাপত্রে বার্টের সমস্ত প্যারামিটার ফাইন-টিউন করা হয়েছে এবং পরামর্শ দেওয়া হয়েছে যে, টেক্সট শ্রেণিবিন্যাসের মতো কাজের ক্ষেত্রে `[CLS]` ইনপুট টোকেনের আউটপুটটি একটি লিনিয়ার-সফটম্যাক্স লেয়ারে প্রদান করে লেবেল আউটপুট তৈরি করা উচিত।

বার্টের মূল কোডবেসে এই চূড়ান্ত লিনিয়ার লেয়ারটিকে কম্পিউটার ভিশনের গ্লোবাল পুলিং-এর সাথে তুলনা করে "পুলের লেয়ার" (pooler layer) হিসেবে সংজ্ঞায়িত করা হয়েছে, যদিও এটি মূলত `[CLS]` টোকেন বাদে বাকি সমস্ত আউটপুট টোকেন বর্জন করে।
### ব্যয় (Cost)
বার্ট (BERT)-কে বুককর্পাস (৮০০ মিলিয়ন শব্দ) এবং ইংরেজি উইকিপিডিয়ার একটি পরিমার্জিত সংস্করণের (২,৫০০ মিলিয়ন শব্দ) ওপর প্রশিক্ষণ দেওয়া হয়েছিল, যেখানে তালিকা, সারণী এবং শিরোনামগুলো বাদ দেওয়া হয়েছিল।

৪টি ক্লাউড টিপিইউ (মোট ১৬টি টিপিইউ চিপ) ব্যবহার করে বার্ট-বেস (BERTBASE) প্রশিক্ষণ দিতে ৪ দিন সময় লেগেছিল, যার আনুমানিক ব্যয় ছিল ৫০০ মার্কিন ডলার। ১৬টি ক্লাউড টিপিইউ (মোট ৬৪টি টিপিইউ চিপ) ব্যবহার করে বার্ট-লার্জ (BERTLARGE) প্রশিক্ষণ দিতেও ৪ দিন সময় লেগেছিল।

## ব্যাখ্যা (Interpretation)
ইএলএমও (ELMo), জিপিটি-২ (GPT-2) এবং বার্টের মতো ভাষা মডেলগুলো "বার্টোলজি" (BERTology) নামক একটি গবেষণাক্ষেত্রের জন্ম দিয়েছে, যা এই মডেলগুলো আসলে কী শেখে তা ব্যাখ্যা করার চেষ্টা করে। প্রাকৃতিক ভাষা বোধগম্যতা সংক্রান্ত কাজগুলোতে এই মডেলগুলোর অভাবনীয় পারফরম্যান্সের কারণগুলো এখনও পুরোপুরি বোঝা সম্ভব হয়নি। ২০১৮ এবং ২০১৯ সালে প্রকাশিত বেশ কিছু গবেষণাপত্র বার্টের আউটপুট এবং সতর্কতার সাথে নির্বাচিত ইনপুট সিকোয়েন্সের মধ্যকার সম্পর্ক, প্রবিং ক্লাসিফায়ারের মাধ্যমে মডেলের অভ্যন্তরীণ ভেক্টর রিপ্রেজেন্টেশন বিশ্লেষণ, এবং অ্যাটেনশন ওয়েট (attention weights) দ্বারা উপস্থাপিত সম্পর্কের তদন্তের ওপর গুরুত্বারোপ করেছে।

বার্ট মডেলের উচ্চ কার্যক্ষমতার একটি বড় কারণ হলো এটি দ্বিমুখী (bidirectionally) প্রশিক্ষণপ্রাপ্ত। এর অর্থ হলো, ট্রান্সফরমার আর্কিটেকচারের ওপর ভিত্তি করে বার্ট তার 'সেলফ-অ্যাটেনশন' প্রক্রিয়া ব্যবহার করে প্রশিক্ষণের সময় একটি লেখার বাম এবং ডান—উভয় পাশ থেকে তথ্য গ্রহণ করে এবং ফলস্বরূপ প্রেক্ষাপট সম্পর্কে গভীর জ্ঞান অর্জন করে। উদাহরণস্বরূপ, প্রেক্ষাপটের ওপর ভিত্তি করে ইংরেজি শব্দ 'fine'-এর দুটি ভিন্ন অর্থ হতে পারে (যেমন: "I feel **fine** today" এবং "She has **fine** blond hair")। বার্ট এই 'fine' শব্দটির বাম এবং ডান উভয় পাশের শব্দগুলোকে বিবেচনায় নেয়।

তবে এর একটি সীমাবদ্ধতাও রয়েছে: ডিকোডারবিহীন শুধুমাত্র-এনকোডার আর্কিটেকচারের কারণে বার্ট-কে প্রম্পট দেওয়া যায় না এবং এটি সরাসরি টেক্সট উৎপাদন বা জেনারেট করতে পারে না। সাধারণত দ্বিমুখী মডেলগুলো ডান পাশের তথ্য ছাড়া কার্যকরভাবে কাজ করে না, যা সেগুলোকে প্রম্পট করার ক্ষেত্রে জটিল করে তোলে। উদাহরণস্বরূপ, কেউ যদি "Today, I went to" বাক্যটি সম্পন্ন করার জন্য বার্ট-কে ব্যবহার করতে চায়, তবে তাকে "Today, I went to `[MASK]` `[MASK]` `[MASK]` ... `[MASK]`" এভাবে ইনপুট দিতে হবে, যেখানে মাস্কের সংখ্যা হবে বাক্যের প্রত্যাশিত দৈর্ঘ্যের সমান। এটি একটি 'ডেটাসেট শিফট' তৈরি করে, কারণ প্রশিক্ষণের সময় বার্ট কখনোই একসাথে এতগুলো মাস্কড টোকেন দেখেনি। ফলে এর কার্যক্ষমতা হ্রাস পায়। আরও উন্নত কিছু কৌশলের মাধ্যমে টেক্সট জেনারেশন সম্ভব হলেও তা অত্যন্ত ব্যয়বহুল।

## তথ্যসূত্র