Chapter 6 The Airship Flies Again, June to July, 1930 The two planes dove and ascended, twinning their smoke trails, orange and white, respectively, until they created an ephemeral Prince of Wales feather, the heraldic badge of the heir apparent. As the feather dissipated, R101 circled the Hinden airfield in north London, while Erwin awaited the cue for the ship to rehearse its role in the RAF display scheduled for the next day. He flew a revitalized ship, its lift increased by five tons, two tons from shaving more weight, three tons from enlarging the gas bags further, and with a patched together outer cloth cover. As R101 circled at an altitude of 1500 feet on this late June afternoon, the August tones of the RAF central band in the stands below occasionally wafted into the control car. But the music was often obscured by the growl of planes. First interceptor fighters zoomed by at an astonishing 200 miles per hour, then nine acrobatic biplanes swooped over the airfield. They split into groups of three, each group linked by elastic ropes. The planes came astonishingly close, while flying at 150 miles per hour, crisscrossing to create with the ropes a colossal pendant in the sky. Their nimble maneuvers highlighted R101's stately majesty as it hovered in the blue summer sky. Once the biplanes departed, Irwin received the cue for R101 to fly over the airfield. Irwin ordered the rudder coxswain to swing R101 around until its nose pointed toward the airfield. R101's engines roared and the mighty airship searched forward. Today Irwin commanded R101 without his friend and trusted first officer Noel Atherston. Atherston was detailed to Canada to lead the relief crew for the soon to depart R100, the sibling airship assigned to Pioneer Atlantic Crossings. Although Irwin missed Atherston, he was relieved to be without the medals of Major Scott. He was on the Canada flight as well. Irwin ordered the elevator coxswain to execute a shallow dive to imitate a bow to the royal box. The viewing stands were empty today, but would be full tomorrow. The coxswain nudged his wheel to start a gentle dive, but the ship dove sharply toward the ground. The quick thinking coxswain spun the elevator control wheel to reverse the direction of the elevators, but R101 continued its descent. The ship dropped in a few seconds 1,000 feet, until about 500 feet from the ground, its nose rose and the ship glided over the back of the stands as it climbed to 1,500 feet. The dive shocked the control car crew, alert now for further unusual motions of the ship. On its return to the works, R101 chopped to the air, its nose again and again descending than rising, and Irwin struggled to keep the ship above 1,000 feet. He knew, of course, that the lift changed based on fuel consumption and the air temperature, which caused the hydrogen to expand or contract, but still the ship's erratic flight was unusual. Although R101 guzzled two tons of fuel on its flight, Irwin had to drop nine tons of ballast before landing. He attributed the ship's heavy flying to the weather. The day of the RAF display, temperatures reached 70 degrees Fahrenheit, and through the sparse clouds, the sun baked R101's outer cover for more than 12 hours. The pale redheaded Irwin was always aware of the sun. He knew it heated the hydrogen in the gas bags and caused them to swell, which increased the lift by as much as five tons. This was not an uncommon problem for airships. The Graf Zeppelin had overheated only a week earlier. It had landed on the ground in Hamburg, the Germans preferred ground landings to mooring towers, and the captain and first officer had stepped off the ship to greet the crowd of 25,000, which included the Senate of the Free State of Hamburg while wearing formal dress. As the town's mayor presented the captain with an engraved cup to commemorate the first landing of a Zeppelin in Hamburg, the stern of the airship rose, the ship almost standing on its nose. The second officer, still in the ship, ordered ballast dropped and the engine started. He righted the ship, but its buoyancy increased by the heating of its gas bags and could not land again. He returned the ship to Berlin, where the cooler night air decreased the ship's lift and allowed it to land. To Irwin, this phenomenon explained not only R101's rapid rises, but also its abrupt descents. The heat enlarged the gas bags so much that the automatic valves perched hydrogen to prevent the bags from bursting. This cycle of expanding and purging repeated throughout the day. The next day, R101 returned to Hinden airfield and awed 150,000 spectators with a spectacular entrance. The ship hid behind a cloud and on cue flew low and slow over the airfield. On Irwin's orders, it executed the rehearsed bow to Prince George, the future Duke of Kent, who set with Prince and Princess Takamatsu of Japan. On route, R101 had behaved well, but on the return to the works, the ship repeatedly dove sharply. After each dive, the coxswain angled the elevators to force R101 to creep back to its proper altitude. It is as much as I can do to hold her up, sir, said the exhausted coxswain, his face streaming with sweat, sweating blood, recalled an observer. The moment the coxswain leveled the ship, it dipped again. The crew suggested to Irwin that it was bent, their term for a heavy airship. They recommended that he drop ballast. Irwin rejected this. Better, he said, to keep the ballast for landing. Turbulent air, he thought, caused R101's instability. When R101 arrived at the tower, Irwin jettisoned to more than eight tons of ballast to lighten the ship enough for mooring. He now worried that R101 leaked hydrogen. Perhaps the seals around the automatic valves had loosened. When the ship was moored, he planned to investigate the gas bags and the valves. The ship's gas bags are the least satisfactory part of R101, declared the ship's chief designer. Adding that development and improvement of the bags is badly needed. In their five years of planning R101, he and his staff searched for the perfect gas bag material, something impermeable to hydrogen, lightweight, flexible, yet durable. They considered the Varney silk or cambrick used in balloons, but these fabrics weighed too much. So they investigated rubber, gelatin and glycerin, and viscose, a synthetic fabric covered with latex. All failed. When crumpled and inflated, each of these materials cracked and leaked. So they settled for the traditional material used to construct airship gas bags, the intestines of oxen. The outside of an oxen's intestine is lined with a fine membrane called the cecum, which is thin and flexible, and through which hydrogen seeps only slowly. It's an ideal material for a gas bag, except for its size. The cecum of an ox is about 30 inches by six inches, a little over a square foot. Yet one of R101's gas bags, when spread flat, covers 30,000 square feet, a square about 175 feet on a side. So to create a gas bag, constructed from a double layer of cecum, coals for 50,000 entrails. In total, over a million and a half oxen and testines were needed to create R101's 15 gas bags. The gristly work of fabricating the gas bags was done by the women of the Royal Airship Works, almost all the labor at the works was local, what one aviation expert called Bedfordshire Yokels, although he noted they are extraordinarily good workers and well disciplined. To start construction of a gas bag, the women first unpacked oxen entrails shipped in barrels from Argentinian slaughterhouses. In a room reeking of awful, they soaked the intestines to remove the salt crystals used as preservative in transit, scraped away lumps of fat with blunt knives, soaked the skins overnight, and then scraped again. Next, they placed the skins on a huge roll of canvas stretched top and bottom between two rollers, tilted at 50 degrees like an easel. 20 women standing a shoulders width apart, each laid down two layers of skins on the canvas in front of them, and then on cue, they rolled the canvas to flatten the skins and expose a new blank section of canvas to work on. They repeated this until they fused about 25,000 skins into a single, continuous sheet with the weight and texture of parchment. Next, they moved the giant rolls to the gluing room. In the oppressive, mothball-like odor of the creosote-based glue, they unfurled the canvas, peeled off the thin skins, smoothed them like tablecloths over large tables, and clamped them taut. On the taut skins, they glued cotton fabric.  After this, the skins were moved to the large floor of the humid assembly room, maintained at 80% humidity to keep the skins pliable, where the women laid out the cotton skin layers on the floor to create the vast surface of a gas bag. They used two of the rolled sheets worth of skins for the smallest bags, but eight or so for the largest bag, which covered nearly three acres. Once the delicate sheets were laid out, the women sandpapered the edges of each sheet and glued them together to form a flayed and flattened gas bag. After cutting a hole for the gas valve, they wrapped this vast sheet around a cotton form in the shape of a gas bag, a shape maintained by an air blower. They glued shut the remaining seams, deflated the cotton form, and removed it through the valve hole. The glue improved on the sewing technique used to construct zeppelin gas bags because gluing left no needle holes that could leak. After construction, the deflated gas bags lay on the floor, a mass of folds large enough to hold 37,500 cubic feet of hydrogen, a sphere with a radius of 20 feet, yet weighing only 30 pounds. Soon it would be transported to R101, inserted into the metal framework, and inflated with care because the bag cost over 8,000 pounds, or 10 times the price of a house in a London suburb in 1930. After R101 returned from the RAF display, Erwin investigated the gas bags and their embedded automatic gas valve. To do this, he climbed from the walkway into the bag area. The gas bags formed at off-white ceiling, 10 feet or so above the walkway. His inspection of the seals on the first three bags uncovered no problems. When he reached the fourth, he climbed a small ladder, then grabbed the wire netting that tethered the gas bag to the ship's stainless steel and a Rallium and Framework. He lifted himself onto the bag, a small flashlight dangled from his neck. Although electrical lights illuminated the walkway, the gas bags above were always dark, even dank. The odor of mold permeated the air. After months in the dark, the animal intestine gas bags often rotted. Erwin used the netting, like a jungle gym, to climb across the gas bag's vast surface, the toll man so insignificant on the bag that he looked like a fly in an enormous spider's net. The delicate gas bags were fragile. Less than a year earlier, a rigor had slipped and punctured one with his foot. So as he climbed, Erwin gently parted the area where the neighboring gas bags touched. The giant bags muffled all sound, yet in that echo-less atmosphere he sang, talked and whistled as he climbed, hoping that if he reached a pocket of escaped hydrogen, his voice would become high-pitched or his whistle shrill. Hydrogen is odorless, colorless, and tasteless, so it affixiates without warning, and more than one unconscious worker had plunged to his death while working inside an airship. When Erwin reached the valve, he ran his hand along its seating where a fabric patch covered with rubber solution secured the valves to the gas bag. The seal was intact and had no ruptures. Then he placed his ear close to the seal and listened for escaping hydrogen. He heard no hissing. To test for smaller leaks, Erwin held up a bit of tissue paper. He saw no fluttering. Then, casting his light around the gas bags, he noticed holes. He climbed to the top, more holes. He returned to the walkway and continued his inspection, discovering holes in gas bags five, nine, ten, eleven, twelve, thirteen, and fourteen. He found holes in seven of R101's fifteen gas bags. They were tiny, a mere three-eighths of an inch in diameter, yet they worried him. Erwin was troubled by the hole's origin. The quest for increased lift by letting out the wire netting, restraining the gas bags, had defeated itself. The newly enlarged gas bags chafed on the sharp edges of the framework bolts, which sliced the bags in many places, and, Erwin noticed, indented them in thousands of locations. If the rattling of the gas bags caused this much damage on a short flight, then the motion of the gas bags could cripple the ship on the long flight to India. Although alarmed by the holes, Erwin was sure they were not the cause of R101's dives as it flew to and from the Hinden airfield. Even allowing, he reported to his superiors at the works, for the numerous holes which are now found in the gas bags where they have rubbed in the framework, the loss of gas would not have accounted for the heaviness of the ship during flights. Erwin suspected that the automatic gas valves were leaking hydrogen, perhaps too much. He had three concerns. First, the valves were easily triggered intentionally to avoid gas bags bursting on R101's trip to India. Unroot, the airship might encounter a tropical thunderstorm where turbulent air could force it high into the sky and burst a gas bag unless rapidly vented. So, the valves were calibrated to expel large quantities of hydrogen. Second, in shed tests the gas valves leaked when tilted to five degrees. And third, on the last Hinden flight, a rigor heard chattering of the valve on gas bag eight. So, Erwin hypothesized that in the turbulence of the flights to Hinden, the gas bag surged and the ultra sensitive valves opened. Although he suspected the gas valves were the chief culprit in R101's instability, he knew that the holes created by the chafing on the framework posed an equally grave danger. He ordered his crew to do a thorough inspection of each gas bag, followed by padding of the framework's longitudinal, radial struts and reefing booms. As crew members glued patches over the holes in the gas bags and padded the framework as a consequence of Erwin's findings, Mr. Fred Brink McWade inspected their work. The Royal Airship Works had, like every large British aircraft manufacturer, a resident inspector assigned by the government's aeronautical inspection director at AID. An aviation inspector was regarded by the average person, wrote Flight Magazine, as a sort of backstair detective who disguised in a bowler hat and a false beard and armed with a macrometer, lurks behind machinery and airplane factories. In truth, the magazine's writer clarified, the inspector is an extremely human and hardworking civil servant. Indeed, McWade coordinated his inspection with the Works' drawing office, which issued all orders for construction and maintenance. An office so important, the McWade joked that if it was necessary to move a table from here to there, I should get the drawing office instructions. The office drew up orders for construction or for changes. McWade reviewed them and issued a small white chit if he approved. Then the work was done. He repeated the inspection and issued a pink chit to certify he approved of the final result. Despite McWade's intimate role in the daily routine of creating and maintaining R-101, AID regulations required that he form opinions independently of the work staff about the ship's deficiencies and the efficacy of any corrections. His regular reviews for the ship deepened the brain trust creating R-101 because he could draw on nearly 35 years of experience with lighter-than-air craft. He had begun with balloons when most of the work staff were still in diapers, then headed the construction of Nellie Secundus, Britain's first military airship. He spent 27 years building and inspecting airships and knew the joys and difficulties of building them and the terrors of flying them. He rode in Nellie Secundus when, on its second flight, the ship plunged to the ground and shattered its metal framework. His opinions were paramount because he recommended monthly whether the director of civil aviation should issue a permit to fly. This legal document allowed experimental aircraft like R-101 to be flown without having been certified as airworthy. It restricted R-101's test flights to know further than 250 miles from the Royal Airship Works, forbade it from carrying passengers for higher or reward, and noted it may be withdrawn at any time. The current permit expired in less than a month at the end of July 1930. McQuaid now had to recommend a new one, but the holes in the gas bags concerned him. Only a few weeks before, McQuaid reflected, the bags were reconditioned, removed from the ship, examined, repaired, reinstalled, and reinflated. Yet now the framework was punching holes in the bags. To investigate the conditions of the bags himself, McQuaid climbed into the airship and repeated Irwin's inspection.  Once in the gas bags, McQuaid aimed his lamp onto the padded framework. He leaned forward and rubbed the padding. To his surprise it easily moved. How he wondered could this padding protect the gas bags if the ship flew in rough weather? He parted the padding and studied the framework. He ran his fingers along his sharp nut and the end of the bolt. He realized that there could be thousands of puncture points in the gas bags. The padding worried him for another reason. How could he or anyone else tell whether the metal framework underneath was sound? It could well corrode and no one would know. McQuaid's observations compelled him to alert his superiors. Though he always addressed his report to his immediate superior, this time anxious that it should be read by the highest ranking official, McQuaid blazoned for the attention of DAI, AID, and red letters across the top. The DAI, the director of aeronautical inspection, ran the directorate and was two ranks above McQuaid. He headed his report, confidential, HMA R101, then added a subheading, airworthiness of the above ship. In crisp prose he detailed the problems. Padding he reported is, in my opinion, very unsatisfactory because the bags move when the ship is in flight and the padding becomes loose and the projection, i.e. the bolts, complained of, is again exposed. He alerted his superiors to the possible lethal consequences of the padding. The fabric will become damp and in many cases wet when the ship is in flight. Therefore there will be alternate processes of wetting and drying of the fabric which must be detrimental to the metal underneath. He closed with a stunning conclusion. Until this matter is seriously taken in hand and remedied, I cannot recommend to you the extension of the present permit to fly or the issue of any further permits or certificates. In McQuaid's opinion, the remedy required a change of construction in the gas bag wiring and framework, a rethinking of two miles of girders, eight miles of tubing, 15 miles of rods, and 11 miles of cables that composed R101's framework. As an experienced airship builder, he knew that this would be a large undertaking but he saw no other course. Never in his years of experience with airships had a systematic structural defect been fixed by padding the framework. So in early July 1930, R101 floated in its shed, banned from flying. The work staff prepared to execute the second stage of the refit, the miracle as Atherston described it, to increase R101's lift in time for a demonstration flight to India three months away but years behind schedule.


In this video, we are going to talk about chat GBT and all of its technical details. So a chat GBT, you ask a question and it gives a wonderful response. The way I want to structure this video is we will first talk about some fundamental concepts that are required to understand chat GBT and then go through each and every single detailed step in which helps you at least understand how chat GBT constructs the answers that it does so that it's safe and non-toxic and also quite factual. So let's get to it. Also thank you all for 100,000 subscribers. Now if you can get this channel to 150,000 subscribers, that would be absolutely amazing and we'll be posting more machine learning, deep learning and AI content in general just like this. So with that, let's get started with some chat GBT lore. To understand chat GBT, we kind of need to understand some more fundamental concepts. So chat GBT is built on top of GPT as well as the entire paradigm of reinforcement learning and the GPT models themselves are essentially language models and they are also built on top of transformer neural networks. So let's take a look at each individually. So language models. Language models are models that have some inherent understanding of language in a mathematical sense and I say in a mathematical sense because they understand a probability distribution of a sequence of words. So given some context or words that have preceded it, these language models can determine what is the most appropriate word or word token to generate next. And depending on the type of data that is used to train this language model and also the architecture of the language model itself, we can get different types of probability distributions of these word sequences, which means that these language models will try to generate different kinds of words depending on these different circumstances. And because of this, we can actually generate language models to handle very specific tasks like question answering, text summarization as well as language translation among others. Now let's talk about transformer neural networks. So transformer neural networks are a sequence to sequence architecture that takes in a sequence and outputs another sequence. Sequences in this case can be a sequence of words for language. The transform architecture consists of two parts, an encoder and a decoder. And so in order to do this translation from English to French, it will take all the words of the English sentence simultaneously. It'll generate word vectors over here for every word simultaneously. These word vectors will then be passed into the decoder. And then the decoder will generate the French translation one word at a time. And every time that there's one word generated, it's going to be provided as context to the decoder itself. Now I've explained much more in detail how this training works in my video on transformer neural networks. So please do check it out for more information. Now what's really cool about this architecture is that we have now two components, an encoder and a decoder that do have some sort of contextual understanding of language and can actually be used as a base for language models. And so if we stack the encoders, we'll get a bidirectional encoder representation of transformers or BERT. And if we take the decoder parts and stack them together, we get a generative pre-trained transformer. These are popular language models, which are typically pre-trained on just general language data. And then they are fine-tuned by us depending on the task that we want to solve. ChatGPT is a GPT model that is fine-tuned to respond to a user's request. And then it is also fine-tuned further by using reinforcement learning. Reinforcement learning is a method of achieving some goal via rewards. I'm going to explain reinforcement learning in general by using a typical example and explaining these concepts here. But I'm also going to explain just after how these concepts relate to ChatGPT. So at first we have an agent over here. And the goal is to make the agent go to this end state. In order to entice this agent to make certain moves, we use rewards. Rewards are the scalar values that you see in these squares. A high reward is used to entice it towards the goal. And every other place has a lower reward so that we can make sure that the agent actually goes as fast as possible and taking as few steps as possible. The state here is going to be the representation of the current step. So for example, this agent is in a position 1-1 so that position is the state. Action is what action is taken by the agent. For example, left, right, up or down within the boundaries here in order to get to the final goal. And the policy thus becomes the sequence or one sequence of actions that the agent will take in order to try to achieve the goal. So one such policy, for example, could be the sequence of actions down, down, right, right, right. And in this case the reward given, total reward would be 10-1-1-1-1-1 which is 6. Another policy could be this sequence of actions, right, down, right, up, right, down, down. And in this case the total reward would be 10-6 which is 4. And now we have two policies each with its own reward and so we can tell which policy was better than which. Now relating this to chat GPT, the agent is the model itself. The reward depends on the response that's given by chat GPT. If the entire response is a good response then it's going to get a high reward. If it's not a good response it's going to get a negative reward. Now in order to talk about state, every single action taken by an agent is essentially a time step. Now in the context of chat GPT, a time step occurs when every single word or word token is generated and so we can define a state as a combination of the user input prompt as well as every single word that has been generated until this point. And this can be used to infer what action we need to take which is what word we should generate next because this is inherently a language model. And so the overall policy would be the sequence of actions taken which is what is the sequence of words that are generated so different policies would entail different responses. And if we have multiple responses, each of these are policies, that means that each of them will have their own rewards and we can then start comparing them to see which was the better response and which was a worse response. And then we would fine tune the model in order to help it generate these better responses. Now that we have like a holistic idea of some of these foundational pieces, how do they all come together with chat GPT? So I took a screenshot of this from the open AI blog and let's actually walk through each of these. So the entire process can be divided into three major steps. In the first step, we take a GPT model that has been pre-trained on understanding language itself and now we will fine tune it in order to take in a user prompt and actually generate a response according to that prompt. And we get the data with labels. So we'll have essentially a few labors that will write a prompt and also write a response to how they want to see that prompt answered. And because we have the input of the output, this becomes a supervised fine tuning of the GPT model. Hence SFT. Next, we now take this supervised fine tune model and we'll take a single prompt, pass it through the model and we generate a few responses over here. And now the labeler is going to be ranking how well these responses are. So for each of the responses that are generated, the labeler will assign some reward. And this is going to be used to train another GPT model, which is called the rewards model. And because this is a model, it is a function which takes some input and generates an output. The input to this model is going to be an initial prompt, as well as one of the responses. And the output is going to be the reward that quantifies how good was this response. And now in step three, we'll take an unseen prompt, pass it through a copy of the supervised fine train model, and then we are going to generate a response. And this response is passed through a rewards model to get some rank that quantifies how good was this response. And now this rank is actually going to be used to further fine tune our fine tuned model. And the way that it's done is that this rank is going to be used in the loss function of this model to back propagate some updates to the parameters. Now what's really interesting is that this process actually helps the model incorporate non-toxic behavior as well as also create factual responses. And this is because that's how the reward was generated itself. The responses which were non-toxic and also factual were given a higher reward. And so incorporating the reward into the model in this way is going to help the model generate responses that are less toxic and also more coherent and factual. And that's kind of the overview of this entire process of how chat GPT works. Now that we took a look at this full infographic, in the next three sections, we will dive into these three steps. So let's start with step one in identifying what is the GPT in chat GPT? Why do we use it and how was it trained? So the source of like GPT kind of comes from the transformer neural network architecture which was introduced in 2017, which was a sequence to sequence architecture. So it would take in as an input some sequence and it would output another sequence. Now in the field of natural language processing, this can actually be super useful because sentences are a sequence of words. And so we started to use these transformers for well, NLP problems like translation. And I'm going to walk through exactly how that goes here. So the transformer architecture has two parts. It has an encoder and a decoder. The encoder is going to take all the input simultaneously. And within this, it's going to actually create some vectors for each of these words. Or I should say word pieces, since there's going to be four that we have four vectors over here. Now, these four vectors are going to passed in simultaneously into this decoder architecture. And we're probably going to have when starting out, we'll have like a start token. And then it's going to now one to the decoder and it's going to output one word at a time. In this case, let's say that the problem that we're trying to do is translation from English to an Indian language, specifically a South Indian language called Kannada. So it's going to be fun. I'm going to teach you a few things here, OK, about Kannada. So my name is a J. So the first word that's probably going to be generated by this, hypothetically, if it's completely trained well and it's working properly is going to be, let's see, Nanna. Which is translation, the Kannada word for my and then name is a J. So after this first word is generated, this word is now going to be the input for the next pass. And so we input it here. And then in this next pass, we'll generate the next word here, which is supposed to be Hesaro. This this actually means name. And then for the third pass, it's going to generate the next word, which is a J. Now, what this actually kind of shows is that this overall architecture has some semblance or understanding of language. And in fact, we figured out that simply the encoder part up here and the decoder part individually also have some understanding of language. And so we can pick them apart, stack them up in order to have them understand more and more parts and intricacies of language. So if you stack just the encoder pieces together, you get a bidirectional encoder representation of transformers, which is Bert and hence that entire research field that's gone into it. And if you take the decoder part and stack them up, you'll get generative pre trained transformers. Which is GPT. And we're going to be focusing more on these GPT architectures moving forward. So I hope the what is GPT over here kind of makes more sense right now. Now that we have the what out of the way, why exactly are we using GPT architectures over, let's say, I don't know, we're current neural networks or any other typical modeling strategy that we used in the past? Well, if we wanted to typically train a supervised model, we would need to train all of these model parameters from scratch. And we do this by collecting a lot of labeled data. Unfortunately, though, with each and every single one of these tasks mentioned, you need to create a lot of get a lot of label data feed it into your model to train it and to learn those parameters. But this is actually going to be extremely hard to find in very large quantities. And even if it does find the plethora of the huge vast amounts of stores of labeled data, it'll probably only be able to answer one of these major domains at a time. And so to solve this issue, we want to adopt a modeling strategy where we're doing some generative pre training followed by some discriminative fine tuning phase. Now we'll have a model where we want to do some generative pre training, which is the unsupervised approach to learn about language modeling. Language modeling here is the type of problem that we're actually optimizing for. Then we have discriminative fine tuning, which is a supervised approach to learn very specific tasks. So in this case, it could be like question answering or document classification or simply user response generation, like a chatbot. And so now that we have some understanding of why we need a GPT architecture, let's actually play out what generative pre training and discriminative fine tuning actually mean in practice. In order to do generative pre training, the goal is to optimize for the problem of language modeling. Now, if we want to make GPT a language model, language models have an understanding of word sequences. Its main objective is to predict what word is going to come next, given the context of all the previous words that have come before it. Mathematically represented, that's exactly what this is, but we'll get to that. So let's say that we have one training example where we just basically scour the internet for random sentences. One of those sentences is today I want to play. Now we have a start token, which we now input to this untrained GPT architecture. When we start, we want to say, OK, right here, we wanted to generate the word today. Once we generate today, we're going to now put that as the input for the next time step where we pass it into GPT and it should do its little magic in here and try to predict I. Now we're going to every single time we do this, we want to tune the parameter such that it is more likely to produce this word I. In the next time step, we want to generate the word want. Then in the next time step two. And then in the next time step, play. Now, mathematically speaking, we want GPT to be optimizing some objective. This is typical of all of machine learning and deep learning. And the objective we're trying to optimize is that of the language modeling objective where we want to try to predict the next word, which is W I. In this case, let's say this entire sentence is W. So W I would be play using all of the previous words that came before it using the words today I want to and theta here are the parameters of this GPT architecture and this overall statement across all of the words is something that we want to maximize. And so theta will have the parameters that will maximize this objective. And so I hope this relationship between what's happening in intuitively and also mathematically makes a lot more sense. Now, at the end of this generative pre-training phase, we're going to get a model that has some inherent understanding of language. And more practically speaking, it's going to be able to generate. Well, given a word sequence, it will be able to figure out what word to generate next. Now, in the discriminative fine tuning phase, we now have a general model, but we want to make it satisfy or solve a very specific problem. For example, in document classification, simply giving the next word is not enough. We actually want to understand the overall sentiment of the document, of what it represents, or we want to understand a categorization. Is it a sports document? Is it as a news document? Is it some other type of document? And so typically we would have this pre-trained architecture and add probably like a very simple linear layer randomly initialized and then have a very small amount of actual training data for document classification to basically learn these small sets of parameters and further fine tune the rest of this model. Now, because there's only a small amount of new parameters and also like most of these parameters in the GPT model already have a good understanding of language, you don't need too many of these these pairs or these supervised pairs of examples for document classification. And this is what makes it much easier to actually just get started with so many of these facets of natural language processing using just simply a pre-training and fine tuning kind of argument or phase. Now, with chatbot and chat GPT, the input is some user prompt and the output is a response and that's already kind of the format in which GPT architectures are already fine tuned. And so all we would need to do is we don't even need to add very new parameters as we did for document classification, but we can get extra examples of user prompts and their corresponding responses that are required in order to further just fine tune this specific model where we're just going to be tuning these parameters. And it's actually this that we kind of see where in the first step of chat GPT, the label or demonstrates the desired output behavior and it fine tunes via supervised learning. Now, to get a more concrete idea of exactly what's going on over here, let's look at this figure in normal GPT. We would typically pass in, let's say, one token and GPT will generate one token at a time. So typically, it'll be let's say that we generated three words. Today, I will now this is going to be passed to GPT in this fourth time step. And eventually it's going to generate a vector, which is going to be of the size vocab size cross one. And I guess like in the later versions of GPT, this vocab size is the number of possible tokens that we could possibly generate in this specific language by GPT. These tokens are not exactly words, but they are word pieces so that this vocab size doesn't doesn't skyrocket to be of the order of infinite number of values because there's just that many words. The vocab size is like around 50,000 or something like that. And this is actually going to be applied to a soft max. And the reason we do this is we want to make this entire thing a probability distribution. So the total value is going to sum to one. And when it's a probability distribution, it's going to signify what is the probability that each of these tokens is going to be used as the next word. Now, obviously, we can only choose one of them. And we don't typically choose the top one with the highest probability because that just sounds less natural and not superhuman. Instead, we use a sampling technique. This can include like temperature sampling or nucleus sampling or top case and you can sample basically from this soft max in order to determine what the next word should be. Let's say that the word that we generated or the word that we kind of picked was the word play. And so play is going to be the next word that's generated. And hence, you'll get a response today, I will play by chat GBT. And this is also why you kind of see chat GBT generate one word at a time. The this ability actually comes from the underlying GBT architecture. And in fact, just to make it even more concrete, I'm going to do a direct comparison with chat GBT. And so let's say that you ask a question, what will you do today? Chat GBT might respond with today, I will as the first three words. And maybe during the fourth word, again, it's going to go through the GPT architecture, create this huge vector of vocab size cross one. It's then going to sample from this probability distribution. It's converted into a probability distribution because of soft max. And then we'll sample from that to get the next word. And so I hope now this creates an even better picture of what is going on behind chat GPT and how big of a deal GPT is within chat GPT. I also want to hammer home the point that like chat GPT didn't just come out of thin air, it's very clearly based on many concepts of language modeling, of transformer neural networks, of GPT architectures that have come before it and so much more. Let's now move on to the step two of this infographic to get a much more detailed picture. So just to reiterate this at a very high level, we have a supervised fine tune model that can take one question and generate multiple responses. And these responses might be slightly different from each other. And so we have a person who will human label decide which of these responses is actually better for this specific question. And so they're ranked. And then we use this data as training data to train a rewards model. And the rewards model is of a similar architecture. Now, this is the gist of it, but there are some questions that we want to answer here. So my big question here was, why can GPT generate different outputs for just one input? So let's say here that we have a GPT model. And in this case, it's taking an input. We'll just call this some you and it's going to be what's for breakfast. And the output of this model is going to be for every single timestamp. It will generate one word at a time. So it first generates today, then it generates we then will then have then French. And now we are at this stage to generate the sixth word. Let's call this entire response W. Now what GPT here is already trained and already fine tuned as well. And so it already has a notion of language, just like a language model. And what that means is that it has an understanding of the probability distribution of word sequences. And so what it's going to predict here is well, this is the sixth word. So we'll call that W five, given all the words that have come before it. That's zero to four and this entire input context. So that's you. And so GPT is going to try to determine what this value is and which word this corresponds to. And then it would output that corresponding word. Typically in machine learning models, if there is an output with the highest probability value, it will just output whatever that value is. But that's not exactly what we want in a language model. Because had we done that in a language model for the same input, that means we would always generate the same exact output every single time. Because in this case, let's say toast is the highest probability word. We will always say today, we will have French toast for this same input of what's for breakfast. But this isn't exactly human behavior and humans tend to say words that are not the most optimal at every single word that we speak. And so in order to circumvent this, we kind of use decoding strategies to make the decisions more stochastic and more human like. So when we pass in the input context, what's for breakfast to a GPT model? Now GPT will now go through a decoding strategy. And this decoding strategy will then determine what word we generate. Now there are many kinds of decoding strategies. There's for example, there's nuclear sampling, temperature sampling, there's top case sampling, where the main goal here is not just to take the top word, but to sample from some top few distribution words here in order to generate this next word. And so it gives it some element of stochasticity. So let's take an example that today we will have French blank and GPT is supposed to determine what's supposed to go here. Now GPT is already trained like I mentioned before, so it has this knowledge of word sequences and probabilities. And so GPT determines that at this stage, this is the probability distribution of words that can go into this spot. So there's a 31% probability that this word should be toast, then there's a 19% bread, 7% fries, and it's in descending order, this distribution. Now with just a greedy sampling, which is the traditional case of like, Oh, just pick the highest probable word. It's just going to predict the toast all the time and every single time. However, if we use something like top case sampling, let's say that K is 10 for every single word, like in this case, it's going to use the top 10 of these words with the highest probabilities in order to generate the word. So it takes the top 10 here, and then it will sample from these top 10 and then use that sampling as a part of this word next. And in this case, the top K is, well, let's just say we pick fries. So today we will have French fries would be the prediction if we had used the decoding strategy top 10. So with nuclear sampling, it's kind of very similar. But instead of for every single case, like every word, we always pick a fixed amount like 10. We'll pick a variable amount depending on the probability distributions that we have at that point. So for example, P is equal to 0.9 would mean that we will get all the words such that the top words that correspond to then up to 90% of the total probability. So if you add these numbers, you get 0.57. So hypothetically, if this P was 0.57, we would have only taken these top three, sampled from it, and then use that as a French word. And in this case, let's say that we could have gotten something like bread. Today we will have French bread would have been the case with nuclear sampling. And then we have temperature sampling where we kind of change the overall distribution itself and we skew it depending on a temperature value. So this temperature value, for example, can range from 0 to 1. If it's 0, all of the highest probabilities will be skewed much higher and the lower probabilities will be skewed much lower. And in this way, you will have like toast 10 to 100%. Everything else 10 to 0%. And if you were to then perform this temperature sampling, it would be the same as the greedy approach because you'll always get toast anyways. However, as you increase this temperature to something like 0.7, this value of the probabilities will go decreasing for toast and it'll probably increase for the smaller probabilities so that when you start sampling, you get a higher chance of variability for this next word. And so you can see that as you get closer and closer to one, the randomness and variability of the word generated increases. In this case, let's just say it was toast. It could be toast. It could be something else. But the greedy will always have toast like I mentioned before. And so if we had done this in another world in the same way, we might have gotten something like this. This could have also been a very possible output where the top K nucleus and temperature samplings gave different possible words here, but the greedy will always give you toast. You can actually see all of this math and action by going to playground for open AI. It's like a beta version. And you can just type in a specific prompt and you will get a response. And this response can be different depending on how you set the temperature or if you want to use like instead of temperature sampling, you want to use like some nucleus sampling over here. You can set up the top P value or anything else too. So I'd highly recommend just checking this out. And so I hope that how GPT can just take the same prompt and yet generate multiple responses makes more sense now. Now in this next phase here, we have labellers that need to rank different responses that we get here. And by ranking, they also have to assign some actual reward value because this reward is going to be used quantitatively in a loss function. So it has to be a number and not just like an arrangement that they've shown here. But how exactly do we correctly quantify the quality of a response here? So for every single labeler, they'll be given a screen that looks something like this where they have, you know, they have the input prompt over here. They have the output of that prompt over here. And then they'll be asked to just rate this on a scale of one to seven.  So one of my first thoughts in looking at this screen was like, why are we asking them so many extraneous questions? Don't we just care about the rating itself? And this itself is just going to be used as the reward? Well, that is partially true actually. It can be used as a reward. But let's say that I am a labeler and I choose three for a specific user prompt and an output. But how good is my rating of three? To get more meta into this, how high quality is my rating of three? You can't really determine that so well because what's three for me might be two for you or someone else. And because of that, it becomes harder to get very high quality ratings too. So to combat that issue, we use something called a scale. Now a scale is essentially just a set of questions with categorical responses that we ask. All of these questions are made to ascertain how well the labeler is sensitive to the issues that are being presented. After all, we want chat GPT to have some understanding of nuance of language as well as understand sensitive topics. So there's a bunch of labellers and they all fill this out for the same question. We can then aggregate all of these responses for the specific instruction output pair below. And then we can just say, oh, so it looks like this labeler labeled at three, but they didn't quite answer the questionnaire similar to how other people answered it. And so I'm not going to really consider their label three to be of high value. And hence I'm only going to use the other responses that correspond to the people who have labeled this in a very similar way. And so by filling out this questionnaire and only using responses that correspond to where the bulk of people had filled out this questionnaire, we can only get the ratings that are good ratings and can be used in order to train a rewards model. Also, just a little tidbit here, the typical type of scale that's used here is called the Likert scale. Likert scale is a common type of scale that typically corresponds to questions of psychological nature. And so like I mentioned before, we have good labels here now. That's our first step to actually training a good rewards model. And so a follow question is here, how do we train this rewards model? Our rewards model is the same supervised fine-tuned model but with a scalar output. And hence I've kind of connected all the neurons to just like a single output neuron here. The input is going to be a prompt and the corresponding response. And the output is going to be a reward that tells us how high quality this response prompt combination is. This architecture here is the duplicate of this rewards model architecture here. And so you can kind of treat this as like a Siamese network where we have a prompt response one here, prompt response two here, they have their own rewards. And we just compare this to the actual labels that we just generated, like which response was better. Now we generated rewards here. We can then use it in a loss function which can then be used to back propagate some values and hence further tune this rewards model. Now this loss function here assumes that the response one is always better than the response two as a label. And it's also a very interesting function here that we'll try to get some more intuition on. So here's the loss function and the R1 is the reward for the first response, R2 is the reward for the second response. And this loss function, we'll assume that the true label was that the first response was definitely greater than the second response. Now if our model, however, continued to predict that response one was greater and greater than response two, that's a good thing. And that good thing is reflected by our loss. It means that the model is actually getting it correct. And that's why we have lower and lower loss. On the other hand, if the model predicts that the second response was greater than the first, this is wrong. And so you can see that as you increase the score by the model, if it was like much higher and higher, then you can see that the loss only increases here. And so this loss function is actually quite effective in training our rewards model. If you're kind of wondering like why we have a sigmoid function here, it's because that this loss is proportional to the log odds that the first response is greater than the second response. I've taken a screenshot of this exact loss function from the paper of Instruct GPT. And this kind of just shows exactly how the training is happening. You would think that like in normal training we would just take all of these pairs, we have a loss value for every single pair and we just randomly start updating our network. But the problem is that there are four responses, for example, from the same prompt. And if we take pairs of those, we have four C2 different prompts, which is like six different prompts in this case. And each of these prompts, if we keep passing them into the model directly and shuffling, it may lead to overfitting. And so what we would do instead is we'd start batching all of the single prompts with all of their response pairs together. And so all of the six kind of losses that we kind of get from the single prompt, they are all used together to make only one update to the model instead of six updates to the model. And this has the benefit of one, decreasing the computation time because there's just less back propagation updates we need to make. And two, it also helps us prevent the model from overfitting, especially as the number of responses that we get for a single prompt is higher. K corresponds to that number of responses. I take it as four, but it could be as high as nine or 10 or anything that you decide. And so that's how we train our rewards model. And then we can use it, as I mentioned before, here to truly understand the quality of an unseen response and then use this output reward to further fine tune our fine tune model in order to have it generate more human responses that are factual and non-toxic. And so I hope that you all have a better understanding of how this step two truly works about how GPT generates multiple responses with a single input, how labelers actually rank and also how to get rankings that are of high quality and then creating and training a rewards model along with some very cool loss function ideas. Let's now dive into the details of step three. And this is kind of where the reinforcement learning piece is really tied in. We have an unseen prompt that we passed through the supervised fine tune model which generates a response. Now I want to actually go through exactly the mechanism and how the GPT model will generate this response. So what does a response look like from GPT? So we have the supervised fine tune model of GPT, specifically GPT 3.5. Now the input to this is going to be a user prompt and also all the words that were generated prior for this specific prompt. In this case, this is the beginning so we'll have like a start token. We input this to GPT in our first time step and this is going to generate our actual first word or the next word which is today in this case for what is for breakfast. Now in the next time step, today will now be a part of the input along with everything that came before it that we mentioned before and it will generate now the next word in the sequence which is say I. And then this process repeats where we take now the word that was generated as the input for the next time step and we generate the next word which is will. Then have, then French and toast. And so you can see that the GPT model over here is going to generate one word at a time using all of the previous words that it had come before it as an input context. And so we have a user prompt. We pass it into the supervised fine tune model to generate one word at a time until all of the words have been generated for that response. Then this entire response is going to be passed along with the input prompt to the rewards model that is already trained. And so what's going to do is is going to tell us how good was this response for this input prompt. We'll get a reward and we now use this reward to fine tune our original supervised fine tuned model of GPT. Now in order to make updates to parameters, it has to be used somehow in the loss function. And this is exactly what we do with this PPO model or technique. How is the GPT model updated? It is updated via proximal policy optimization.  And specifically in the proximal policy optimization case, the way it accomplishes this is using the reward in the loss function itself. This function you can consider is like the negative of the loss function. And so we want to kind of maximize whatever this value here is. This product of this R function as well as this advantage function A, it is going to be proportional to the reward. And so higher the reward, we're going to have like a much higher value for this entire function. And that is going to influence the direction of the parameters in our GPT network. These theta are the parameters of our original GPT model. I'm going to explain the individual terms here in my next pass. But for now, I hope you kind of just get to understand what proximal policy optimization is trying to do in general. It is trying to optimize or maximize the total reward seen by our network. Now let's get to the pass three where we dive into further details. For our pass three, I want to actually take a look a little closer into this model itself and just re-saw in pass two how it generates one word at a time but how exactly does it select which word to generate at every single time step. So let's consider now our example for we have our original GPT model, we have an input prompt, and it has been generating words one at a time like it generated first today, then I, then it will, then have, then French. And now it is at the step where it should try to generate what should come next based on this input as well as everything you know, everything that's come before it will also be an input here as well. Every single time that it needs to make this decision it's going to have like a table in its brain and this table is of a probability distribution. It's a table of words as well as the probability that they will occur next for this given input prompt and given response that has been generated until now. So in this case it's going to say okay there's like a 38% chance that toast is going to be coming and filling in this, there's 27% chance it's going to be fries and there's an 8% chance it's going to be bread and maybe like there's some other words that come after this in the table. But to actually decide the exact word that's going to be done, GPT is not going to just choose the top one and be like oh this toast is definitely going to be it because in general in language specifically we don't always as humans say the most optimal word that's going to come next. It's just not going to sound very human. And so what's going to happen instead is we have this probability distribution and according to this distribution we're going to just sample a word. So there's a higher probability that toast is going to be selected but it's not guaranteed that toast is going to be selected. And let's say that in this case if I pick some word it just happens to be toast and that's great then toast will come and fill this blank. But it could have very well been fries or bread at any point of time. And because this table is generated a new every single time we get a new input and these inputs can be different every single time we use even the same request prompt. This is kind of why GPT as you've seen probably in this initial case that it can actually create different responses despite having the same input prompt. And because this response can be different every single time even for the same prompt we want to pass it into the rewards model just to check how good it actually was as a response. And like I mentioned in previous passes we use this reward in our fine tune model to actually change the gradients and make some gradient update every single time we have an input prompt. Now let's actually get into details about the loss function that's used to make the gradient updates. So like I mentioned before this is the loss function or rather the negative of that loss function that we want to maximize. Theta is the parameters of our original GPT architecture and is going to be the parameters of our chat GPT model to come. Now T over here is going to be every single time we have one complete response that is one time step. R is going to be a ratio or rewards ratio where it is the ratio of rewards with the new parameters for the given input prompt divided by the reward of the old parameters with the same given input prompt. And so if this is a very high number that's way over one that means that whatever parameter updates we are thinking to make now they're actually going to be better at least for this specific input prompt than what it when the old GPT was for the previous time step. And so ideally we would want to make these gradient updates in general. Now A is going to be called the advantage function and in reinforcement learning the advantage function is a value that assesses how high quality the output was with respect to the input which in our case is the same thing as a number that's proportional to the reward. And so overall this product of R and A is going to be very high if the response is very good and it's going to be very low that is either like closer to even negative because this advantage function can be negative if the response is very bad at least for this given input. And so we want this product to be as high as possible and that's kind of exactly what these policy optimization techniques do. They try to maximize the total reward. Now this is great but we also don't want to make the gradient update a little too large because typically in learning we want to learn step by step. And so in order to make sure that the gradient update is not too large we will try to clip the upper and lower bounds of this ratio. And in this case we can clip it by an arbitrary value of epsilon. We choose one as the center because if like the rewards ratio is one that means that the new parameters reward is equal to the old parameters reward which means that in downstream like the parameters themselves don't change. How large epsilon is will quantify how much we are allowing the gradient updates to change after looking at like a single example user prompt. For example if it was between if it was like 0.1 epsilon that means that this rewards ratio will be confined between 0.9 and 1.1 which means that we are only going to make minor gradient updates overall. And in fact that's also why we're taking the minimum of these two values so that we have literally the smallest update that we will be able to make. Now why do we have an expectation over here? Well this kind of goes to the fact that I mentioned before how we can generate for the same input multiple kinds of responses. And so we would want to simulate this input the same input into GPT like multiple times over and then we'll take an average of those values and so this entire thing won't just be reliant on a simple like arbitrary output that chat GPT happened to produce. And so we take this final value and we then make gradient updates via gradient ascent. Because now this is not a loss function it's like the negative of the loss function something that we are trying to maximize. And so we're going to keep performing this update for every time step T that is every single time we see a user input response pair and over time this value of theta is just going to get better and better until eventually we'll get a model that is just non-toxic to a very high degree factual to a very high degree sounds more human to a very high degree and that is chat GPT that we see today. Now that's going to do it for the video I hope that this infographic and chat GPT is demystified and while there's an explosion of language models on the scene today they are still based on the same fundamental principles. So please do like subscribe thanks again for 100,000 subscribers love you all and we will see you very soon for another video. Bye bye.


I'm pretty sure his name is Flumpty and the owl was there too. I like that. So hello people of the internet My name is Johnny and welcome finally to One Night at Flumpty's 2 on Mobile. It's been out for a few days and I am finally getting around to it I know I've still yet to play hard boiled mode on One Night at Flumpty's 1 on mobile But I'll get to that sometime in the future. Since we have played through One Night at Flumpty's 1 and 2 already we've revisited them I don't feel like I need to act super fast to get these you know port videos out even though I probably should because it's on freaking phones now So this actually marks a pretty big milestone in the Fazbear Fanverse initiative Because One Night at Flumpty's 1 and 2 are the only Flumpty's games out as of right now That needed to be ported. So Now we're just waiting for some console ports as well as the third game Flumpty's 3 So I don't think I need to introduce Flumpty's 2. A lot of people critically acclaim the game They think it's one of the best for now fan games out there So I'm really happy that we can hop into it on mobile today. Here we go survive until 6 a.m And we're in. Oh, this is so cool Hit the light, okay Fun fun, so I'm going under the assumption that I don't really need to explain Flumpty's 2 a whole lot so basically Flumpty's already out, okay and If he comes into the hallway We turn off the light. The owl is right there and they will go through one of the two vents Oh, Flumpty should be here soon, right? Oh Birthday boy blames out as well So there's a few small details that we should probably cover One of them is this pig right here who I believe used to be the pig from like Winnie the Pooh I I don't know. Oh owl is waking up and Then also the um that might have been Luigi before it has now been turned into the alien from like riddle school Which is another one of Jona comes games? Oh They still got the roar they still have the fruity Hong Let's go. Oh owls red vent He's already active dude. Oh my god Flumpty and uh birthday birthday boy blamma. I'm just kind of waiting for Um, I saw it doesn't activate until later on in the night. Hello Dude perfect timing. Okay. All right turn that back on Birthday boy blam should be appearing soon. I think I Actually can't really remember When he comes in I don't like how quiet it is when the lights go out. Oh um Am I am I good a Strategy for this game is to have The lights off like all the time and then pull up the monitor occasionally to check on the owl So I don't know I Mean it's a cheap strategy, so I don't want to use it for the whole game But it does work out Extraordinarily well, so who knows if I have to I will use it with a boy blam. Okay. He's making his way over I don't know at what time the clown activates. It might be like two or three. I don't know.   Okay, he's on the ceiling because of course he is. Oh and my laptop died God Okay, I Totally hit that. Okay. I just want to say I totally hit that. Oh Come on start up Okay, we're doing fine. We're doing fine 2 a.m. So the clown is active now It's gonna take him a bit to get here though Hello, the red man right there. Awesome. Oh I was gone. He's in the blue vent. Okay I'm just kind of chilling until okay I'm gonna turn off now wait for the clown Gronk fist the clown Hello It looks so good on a mobile too, which is I'm very surprised about actually So great walk my click team and Jonah chrome on this. This looks so good birthday boy should be coming on soon We got a long time until the the clown shows up again. Oh here comes. Oh cancel that Flumpty might be here soon as well I'm just gonna chill here for a bit actually wait for Mr.. Birthday boy blam to appear whenever he feels like that Whenever he feels like showing up Hello. Oh my god.  It's so good.  Okay. Oh God, okay That's close that Awesome. Thank you. Grunk fest. That's great This game is gonna be very difficult on mobile just because All the buttons are so small Okay, you are at a thousand again. That's good with Flumpty. I have no clue. Oh It doesn't charge when the I'm totally hitting the light switch. Come on mobile. Oh My god. Okay. I will still there. That's fine Where's the clown at? Okay, couple hundred seconds a little bit longer Switched off now should be here Okay, that's fine. I Want to see how the owl is doing though. Oh Come on Flumpty go away Cool. He's still there. That's fine Birthday boy blam's gonna come up soon. Okay. Oh god. I know I'm trying to find the owl dude. Oh My god. Well, we're definitely not going to um, okay. That's fine. That's all the closed We're not gonna beat it with no Exposure But hey, as long as we beat it, it'll be fine in my defense again some of the hello some of the buttons are very hard to press just because everything is Incredibly small look at this Right buttons kind of small Come on. I got you on the owl Might have shut this off just a bit too early Come on go away.  Oh, I'm totally dead boom That right there ladies and gentlemen is a gaming time Okay, so the the I saw it is coming out So we got a watch out for them Where is okay? So birthday boy plan is coming up as well.    Thank you. Thank you. Thank you. I mean really? Oh God, I Don't know if I have time to check Nope, I didn't okay. Luckily I did wait But it's oh god Hi, golden flumpty.  Hey, we're not doing that bad again a good strategy. It is a little bit cheap is to just Keep doing this right check on one vent if you don't see the owl, you know, he's in the yellow the other vent So just keep that one shut It's not a bad strategy and we're almost at six Oh Hopefully we can beat it first try.  Look at that That's exactly how you do that strat with the owl and now The owl will take a bit to want to leave again, right leave his his station right there So oh god. Oh god. Oh, oh Let me out Awesome. We should have this in the bag. Hopefully it's 6 a.m. Soon. I believe actually wait now It's not 6 a.m. It's spam. I think Okay Doing good. Come on tick over Hello, but boy. Are we doing?  You can just pull up the monitor Look at that first try ladies and gentlemen Starting from the Bumpty. Let's go birthday boy. Blam That owl Grunk fist the clown The red man we didn't see him a whole lot And I saw we only saw him once Makes sense though golden floppy. We saw like twice a thing Yeah Once we get into hard boiled mode. What's that'll be another video. Okay that calm down. That'll be another video Um We'll see those guys a lot more often, but that's one out of 50 to normal mode works out very well Obviously, I can't complain too much about the buttons just because like phones are such a small device that I I legally cannot complain about it because you know, there's so many buttons You can't really make them too big because then it's annoying So yeah, I'm not gonna complain about the buttons because it's like that for all mobile games Yeah, it looks it looks great really it does look great Animations are very smooth right the graphics impeccable. I'm sure I missed some Easter eggs some Changes from what the game used to be like to what it is now since you know, they had to change things for some copyright reasons That's why the pig is like a purple color now That's why I'm Luigi was changed into that character from a riddle school or riddle riddle transfer I don't know which one that characters from yeah, very good I'll come back for hard-boiled mode for this game and one out of something is one sometime in the future again We've played these games a couple of times already so I don't feel like I need to rush into them Right away, so I'll take my time right it also might take a few attempts But then again with that strategy with the owl you can get it done pretty fast So hopefully it shouldn't take me too long. Yeah, that's it. Thanks for watching and I'll see you all on the flip side


Where are you going buddy? Alright, it was nice seeing you buddy. Bye Vinnie. This is cool. Did I get any school? Watch out. Let me scare him over. Stay right there. You're okay. They're not going to do anything to you. I don't know. He might go over you and he might go back up the steps. You have to walk this way.  Go, go, go Vinnie. Vinnie? No, he's got a... Stop buying. Get him one. We have a box. It's for you. It's for you. It's for you. For you. Go get it. Good job. Good job Vinnie. You ready to do it again? For you. See, Harry is in here Vinnie. So we have to go. He followed you.  Okay, do the two-step for him. I can't right now. Hold on, I'm setting this thing up. Back up.  Can you do the two-step? So the man and these birds... If you are thinking about getting a bird and you think it's going to be an easy life, it's not easy. We spend a good hour in the morning and a good hour at night just to get things situated. And then it's all day long and chasing after them and getting to know them. And figuring out what makes them do what. It's crazy. These guys are crazy. Are you still figuring it out? Every day is a new situation. Right? Yeah, see? I love it. They drive me crazy, but I love it. Who's your favorite? Jersey. That's it. She's my baby. I love her. But I do love him too. I love him all. I can't say who's my favorite. Rocky's all washed up. Rocky just had a shower. Rocky, I got you a present. What do you think it is? Are you excited? That means he doesn't know. Are you excited? Or are you excited? Do you know what it is? No, I don't. But you've been kind of like holding it back for me too. So I'm excited too. Okay. Mom! Mom wanted to see Rocky's reaction. She didn't believe me. For those of you new to my channel, Rocky was locked in a cage for 10 years. Not by any malice or anything like that. Although it sounds pretty bad. What happened was he was with a bird owner who's amazing with birds. She had two macaws, Rocky and another bird. And she was great with Rocky for about seven years. He was her baby. And then the female macaw laid an egg and that obviously made Rocky pretty hormonal and really interested in that female at all. And he bit her one day and she couldn't get Rocky off and he just kept biting on and both of them got scared of each other because of the way she went like this, you know, to get him off. And whenever she approached his cage, he was very scared. So they basically had a hard time with each other and then he started liking the husband and then eventually he didn't come out anymore. So he was locked up for 10 years. He also just put that on the bottom of the air. There was no scripture for them to read and that's it. I'm sorry, what? What input have you ever had on my video? I only have good input. Like don't talk, just make everyone read. By the way, don't forget if you guys are looking for an amazing bird food brand for your bird that is healthy, organic and not full of food colorings and sugar and peanut smash, check out Marlene's signature blend. I did this along with Top's Parrot Food. We just launched in the UK. Northern Parrots now sells our food. You guys have been asking for it, you've got it. Also Things for Wings in Canada sells our bird food right now. I'm proud to announce and they will ship it to you. I encourage you guys to check out my Feathered Fun Box. It's a passion project. It's a subscription box that comes with parrot toys for your bird and also special merch. Kind of like my dream box. Honestly, I put so much into it. I love that there's something like this for birds out in the world. That's why I created it. www.featheredfunbox.com I love you guys so, so much. Thank you for listening.