The robots are getting stressed out
The idea of machines expressing human traits is fascinating, and I think the challenges around this make some of the most compelling characters, at the very least in science fiction. Perhaps there is something inherently relatable about the challenges humanity faces that we recognize in robots and computer models when they begin to encounter and overcome similar obstacles. As these technologies continue to progress, I suspect we'll push the boundaries of what we know about ourselves even more than what we learn about designing computer models.
I've seen a few articles that cite a recent study on how large language models (specifically GTP-4 in the case of this study) begin to behave differently when presented with emotionally-charged, or stress inducing information. Specifically they become less likely to behave objectively and trend towards expressing biases latent in the data they've been trained with.
One suggested explanation is that this is in-part a "trait" of the LLMs. They've been trained using vast amounts of human generated data, and so they mimic the pattern that humans follow in similar situations. Somewhat humorously, the study showed evidence that using mindfulness meditation techniques on these LLMs helped to "relax" them and counteracted the trend towards biased behavior.
While the study focused on more of a black-box method of working with the GTP-4 model using prompts, I think there's something inherently interesting about the nature of the type problems that were presented to these LLMs.
Recently, I've been working on adding support for vector databases to the chatterbot
Python library, and so naturally I've been giving a lot of thought to the idea of vector representations of information. But what are vectors used for in LLMs? In a general sense, "words" as the LLM understands them are represented as vectors, or rather a number that represents that word's relationship to other known words. As a small example, we can consider the relationship between "speaking" and "writing" alongside actions that could be synonymous with either:
(Speaking) ● / \ / \ (Poetry) ●-----● (Rhyming) \ / \ / ● (Writing)
Speaking and writing have very close contextual relationships but on the other hand something like "running" or "battling" would be a significant distance away from these terms.
Vector relationships like these may be relevant to the responses of LLMs becoming less optimal when presented with stressful information when we start to think about the attributes of those types of situations. Our own brains excel when faced with information and scenarios that we're familiar with, but begin to experience stress when faced with fundamentally challenging data. Much like the vector spaces, stressful scenarios involve points of information that are further apart, they are challenging because it takes greater effort to try to reconcile it issue at hand.
The distance between vectors is still a bit speculative on my part, but might be worth some experimentation to better quantify. More likely than not, the landscape of information shared between humans and machines is highly nuanced, and shaped by an extensive range of both strong and subtle forces.
The Year of the Robot (2025)
Designing a new robot neck joint
This weekend I finished up the new neck joint for Salvius. After traveling around last summer with the robot it quickly became apparent that a few modifications needed to be made. The main problem that I was facing was that the neck was too unstable to support the robot's head. As a result the head wobbled around quite a bit during transport and this led to some of the joints and connectors becoming damaged.
The new neck design I needed to create had two main requirements. First, it needed to fully support the weight of the robot's head. Second, I the new neck should allow the head to be easily detachable. I added the second design parameter for the purpose of making it easier for my self to disassemble the robot for transport and development when needed.
To accomplish this, I moved the universal joint in the robot's neck, which allows for left, right, forward and backwards tilting of the head, closer to the back of the robot. By increasing the distance between the universal joint and the linear supports that move the head I was able to improve its stability. The second major change I made was that I moved the neck rotation servo from the base of the neck, up into the head itself. This alteration was to help ensure a more modular design of the head and neck. Last, a metal axle with new bearings was added to the top of the universal joint to ensure a smooth movement as the neck servo rotates the head from side to side.
Installing PIP on the Intel Edison
Connect to the Edison
Start by connecting to the Edison through the serial port. I'm running Ubuntu, hence the sudo screen.sudo screen /dev/ttyUSB0 115200
Then you will want to make sure that your Edison is connected to the internet.
configure_edison --wifi
You will have to wait a few seconds, then select your network and enter your password.
Add Third Party Libraries
Intel Edison is powered by Yocto but pip is not in the official repositories, therefore we need to add the unofficial repositories. We began getting the latest Intel IoT Developer Kit libraries.echo "src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/intel-iotdk.conf
Begin by adding the repositories using vi.
vi /etc/opkg/base-feeds.conf
Add the following three lines:
src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
Save and close the file. Then update the package list.
opkg update
PIP is now installed, however it requires setuptools to be installed before PIP can install any Python packages. The setuptools package is now included with the latest version of pip. To upgrade pip to the latest version you can now run
pip install --upgrade pip
Salvius gives a thumbs up to students at Tech Foundry
Grinspoon Entrepreneurship Conference
The event, funded by the Harold Grinspoon Foundation, helps to support entrepreneurs and small businesses by allowing participants to showcase and even sell their products. In addition, students who attend have the opportunity to meet and hear from people who have already started various business endeavors.
Salvius's exhibit was set up to show attendees the new linear actuator that was developed to support the weight of the robot at its ankles. A video of the actuator working is available on Salvius's YouTube channel. There was also a sample of the construction guide available, which showed all of the instructions required to create the same linear actuator out of recycled materials. The future release of the finished construction guide will provide a complete set of instructions on how to build robots like Salvius. For students interested in learning how to fund their own projects, the poster at the exhibit also had several panels showing how Salvius has been funded through crowdsourcing so far. In the past, Salvius has been featured in newspapers and also on the Make Magazine blog. It is extremely important for anyone who wants to get funding for their ideas to put that idea out there so that others can learn about it and contribute.
Later on in the day, Salvius met Harold Grinspoon himself. Grinspoon is responsible for founding the Entrepreneurship Initiative and helping many individuals in their various entrepreneurial pursuits. As a part of this conference, a panel of speakers was invited to talk about their own experiences creating projects and startups. As a part of this panel, I focused on some of the strategies that I have used to fund and develop Salvius. One of the biggest successes was when Salvius made the front page of the Wilbraham Times during a fundraiser to help build him legs.
Part of the reason that I started building Salvius was because I wanted to be able to get up on stage like this to try to inspire people to learn about new technologies and to show them how they can make their own ideas a reality. For anyone looking to launch their own projects, robot-related or otherwise, I felt that there was two, really important items to know. The first is that technology is the most effective tool you have to scale your ideas. You can reach far more people online than you can through any other form of communication. It doesn't matter if you have created the most amazing new gadget, if nobody knows about it then it can not succeed. The second item is that your community is the energy supply for whatever project or startup you are creating. Your friends, family, teachers and co-workers, will be the first place you will turn to get the what you need to kickstart your idea.
Learning from chatterbot
The communication between my program and CleverBot was really interesting to observe. The conversation started out awful and was totally incoherent. However, after about ten iterations of the two talking back and forward, my program started replying with some of the new replies it had "learned" from talking with CleverBot. This progressed to the point where they could have an almost completely coherent conversation with each other. The only problem is that my program was still only able to provide replies from the selection of statements that CleverBot had said to it.
I decided to extend the range of where my program could attain conversation data from. This is where I made the mistake. I decided that Twitter would be the optimal source to have the program pull data from. Tweets are short an sentence-like and there is plenty of people on Twitter constantly creating new messages and conversations that are all publicly available. Naturally this seemed like the perfect source of conversation data.
salvius: "hey mc, doing well. Thanks for sharing nmirz new video."
cleverbot: "Are you a dog?"
salvius: "lmao are you a dog person?"
cleverbot: "Who was the who?"
salvius: "Who? Who is but a form following the function of what and what I am is a man in a mask."
cleverbot: "It's not your powers of observation I doubt, but merely the paradoxical nature of asking a masked man who is. But tell me, do you like music?"
salvius: "I like seeing movies."
cleverbot: "I wish I was The Mad Hatter."
salvius: "You're entirely bonkers. But I'll tell you a secret. All the best people are."
The conversations that resulted from pulling conversation data from Twitter's api was not what I had expected. On the positive side, my chat bot was now amazingly up to date with popular culture, even being converse about recent television events that had just premiered (such as the latest Dr. Who episode). Talking with Cleverbot, the two stopped speaking English at one point, preferring to address each other in French. While the responses that the program returned were relevant and coherent, they also were extremely prone to reflect what is probably best described as the chatter of the internet's most profound trolls. A plethora of profanity ensued regularly whenever the subject of a conversation began to have anything to do with sports, various actors, or politics.
For anyone who is interested, I have published the code for my chat bot program in a repository on GitHub, https://github.com/gunthercox/ChatterBot.