Exploring AI for Weather and Climate Forecasting, Programming, Reflections, and Habits 🌎✍️💻
Welcome to another month in my life!
Hi, it is so nice to meet you/ see you again 😁! I am Giovana Ferreira, but you can call me Gio :) I am 16 years old, from Brazil, and I am currently an Innovator at the accelerator program, The Knowledge Society (TKS). Being driven by curiosity and the pursue of greatness, I am thrilled to share my learnings, challenges, growth and successes with you. I have been exploring artificial intelligence for climate change applications and risk prediction and building projects in the field. I love robotics, band, and emerging tech!
Highlights of the Month 🔦✨
Meeting with an Expert
Last Friday, on January 26th, I had the opportunity to talk with Ignacio Gomez (go checkout his work!!). Ignacio is a Research Scientist at Google working on improving weather and climate predictions by leveraging AI.
It was awesome to talk about the current challenges being faced in weather and climate prediction such as computational constraints, cloud coverage, which is the biggest source of uncertainty in climate models, the availability of training data that is similar to the data being evaluated, and things being done to improve climate models, such as using hybrid models and AI.
Thank you, Ignacio, for having this talk with me :D!
The problem with current physics-based models is that those have to run a projection many times to get all the scenarios, making the process computational expensive. One thing AI is very good at is that if you train it to emulate a climate model, then it runs much faster and it is much cheaper. With machine learning the equations are not really being solved but it is learning how to emulate them.
For example, Ignacio discusses a methodology, called SEEDS in of his research papers, in which computational cost can be reduced and more accurate and reliable forecasts can be done. It does so by emulating ensemble forecasts with deep generative diffusion models learned from a couple of previous forecasts. These models are able to generate a lot more members in an ensemble, increasing accuracy and reducing computational cost.
Robotics - 2024 Challenge Kick-off and Meetings 🤖
On the first weekend of January, FIRST Robotics announced this year’s challenge called 🥁🥁 CRESCENDO!
The entire team is super excited about this game and especially because this is the first year Andromeda One is implementing swerve drive on the robot! It has been a learning moment for everyone, students and mentors. I am particular excited because this is also my first time working in the software team! I am really excited to be dealing and learning about swerve drive and improving my Java programming skills. It is always super fun to see the robot running with the code you deployed :)
Note: swerve drive is a type of drive train in which each wheel can point in any direction. Since the wheels can point in any direction, the robot can move in any direction. Additionally, it can do cool maneuvers such as turning its wheels to form a circle and spinning very quickly; in past years our robots had tank drive. Imagine the wheels in swerve drive bot just like the ones in shopping carts but with some cool encoders, and tank drive well… as a tank. Swerve drive is really complex and involves and requires experience with PID Controllers, creating custom PID Outputs and PID Sources, and debugging.
Mindset of the Month 🧠
Antifragility 📈
Antifragility is about not only being resilient and resisting through hard times but also about improvement. We can maximize our potential and outcomes by taking advantage of randomness and uncertainty by applying a growth mindset and believing that you can improve and do hard things through hard work. Antifragility has a singular property of allowing us to deal with the unknown, to do things without understanding them— and do them well, because the antifragile has the confidence to take the risk and figure stuff out. Being resilient is not useful if you can't find ways to improve after a hardship, because eventually anything robust can shatter, but if you're able to get stronger by reflecting and going through iterations, that is being antifragile.
Checkout these resources to learn more:
Reading of the Month 📖
This month I read Night by Elie Wiesel, and this book made me think a lot about how much suffering people had to go through due to cruelty and prejudice, but it also made me realize that I have no reasons to complain. Whatever excuses I have, or stress I am going through, might be valid, but throughout history people had it much harder than most of us today. During the Holocaust, many people, including individuals my age and younger, were forced to leave their homes, were separated from their parents, had to leave everything behind to live in death camps, where they didn’t have enough to eat, went through forced labor, saw death and experienced enormous physical and mental torture. I have a home, a family, plenty to eat, education, a healthy life with healthy relationships.
Victims to the Holocaust saw what no human should have to see: The triumph of political fanaticism and ideological hatred for those who were different; multitudes of human beings humiliated, isolated, tormented, tortured, and murdered. This book not only made me more educated about this dark period, but it made me be more aware of my own privileges, and more grateful for them. Night taught me the lesson that we must learn, remember, and be the messengers against prejudice, genocide and injustice. We must bear witness.
“For the dead and the living, we must bear witness.” - Elie Wiesel.
Current Read…
I am currently reading Principle by Ray Dalio. While I am reading it, I would like to leave you guys with this video to reflect on:
Principles For Success by Ray Dalio (In 30 Minutes) - YouTube
Progress on my Project⚙️
I have been working on a machine learning model that takes in satellite images to do weather nowcasting. The goal is to predict the amount of rainfall, measured in millimeters per hour, for the next two to six hours in the future.
Why should we care about predicting the weather and the climate? All beings on this planet are impacted by the atmospheric phenomena we call the weather. Weather systems determine when to produce our food, how our infrastructure must be built to be resilient or when to prepare for different climate hazards, such as floods and droughts. Climate change has been changing weather patterns, disturbing natural processes, and making natural hazards more frequent and destructive. Therefore, it is really important to have better predictive models that require less computational power and provide us with more accurate and reliable forecasts, and AI can help us with that!
I am using NASA's Global Precipitation Measurement (GPM) to get the amount of precipitation of rain and snow, measured as millimeters per hour.
To look at the cloud and moisture I am using data from GOES-16 Cloud and Moisture Imagery, which was the first satellite from the and the Geostationary Operational Environmental Satellites (GOES) mission, operated by NASA and NOAA.
Lastly, I’m using the MERIT Terrain DEM dataset to get the elevation.
I have been able to use Apache Beam to fetch data from Earth Engine in parallel, and create a dataset for the model in Dataflow, I loaded the data files with NumPy and loaded them into Hugging Face Dataset. I defined a Normalization
layer which applies Z-Score to normalize all the model's inputs as a first step and calculated the mean and standard deviation for each input. I want to pass the inputs in a channels-last format and want the predictions back as channels-last for convenience, but I had to convert them to channels-first for PyTorch convolutional layers to work.
The model then passes the data through a 2D Convolutional layer for downsampling, and then through a 2D DeConvolutional layer for up sampling, so it ends up with images the same size as the input image. I used a ReLU
activation function in between all hidden layers since it's typically a good general purpose activation function. The Conv2D and DeConv2D layers form a very simple Fully Convolutional Network architecture. For the last layer, I use a Linear
layer with the number of outputs I want.
The next milestones are to train my model and get its predictions!
Monthly Goals Recap 🗓️
Takeaways + Reflections ✍️
The physical tracker held myself more accountable and I am definitely keeping it for next month.
I established all these habits, but I didn’t create a solid system that automatically forces me to fall into these habits, and that is why I think my consistency could have been better. I need more clear cues of when the habit should start (make it obvious), then I need to make my habits more attractive, easy and satisfying.
Atomic Habits by James Clear provides practical ways to creating good habits and getting rid of bad ones. This book is 100% worth your time!
If I was more consistent with journaling, I would have more data points to evaluate myself this month and I would probably have identified earlier things I could have changed in my routine in order for me to accomplish more; reflection leads to progress. That is why I am going to keep my reflections, notes and ideas I want to remember for later, habit tracker, etc., in a physical notebook; what I have noticed is that I made this particular habit (journaling), less attractive and satisfying by doing it digitally, because that is automatically associated with staring at my computer for longer (which is often associated with busy work) + I need a screen break.
Action Items ✅
When I wake up, I will → turn on coffee maker, brush my teeth, get dressed, grab a cup of coffee, get my computer and start outreaching.
At 9:30 pm every night I will dedicate at least 15 min to write my daily recap and reflection and dedicate time to plan/ review my goals for the next day.
I am going to write my weekly reflection every Thursday night, right after I take a shower and have dinner.
I think I have a good system for exercising (exercising right after I get back home from school and taking walks whenever I stay after school). My goal is just to stick with that.
My cue for reading is going to be right after I am done with journaling, but in addition to that, whenever I am doing focused work, I will put my cell phone away in a drawer so I don’t feel tempted to check it in between breaks, instead I will have a book right next to me, so I can read it instead.
For other goals like working on personal projects, publishing articles, taking a course, etc., I will be intentional by blocking out time in my calendar for those things and writing down small steps to get a particular goal done.
Goals for February 💪
[ ] Finish the code for weather forecasting model by 2/3/2024.
[ ] Publish article about my machine learning project by 2/8/2024.
[ ] Post YouTube video on my project by 2/16/2024.
[ ] Publish 1 article on an interesting topic to me.
[ ] Have 4 external meetings.
[ ] Read Principles by Ray Dalio and write a reflection on it and publish it on Medium.