Connect with us

# Using Optuna to Search for Tiny RL Policies

Published

on

### @jfpettitJacob Pettit

ML researcher, blogging about reinforcement learning, machine learning, and AI.

All image credit to maintainers of the CMA-ES library on GitHub. Image source.

Recently, I needed to search for trivial policies in an environment. These policies were simple things, like always take the same action, or every K steps take the same action, etc. In order to optimize these trivial policies as much as possible, I turned to the Optuna framework. But as I dove into their documentation, I found that they’ve got a nice set of optimizers and I began to wonder: What if I searched for not-so-trivial policies?

Could I search for all of the parameters for one small neural network layer and get good performance? The answer, we’ll see, is yes… in some environments.

## The Setup

I decided to keep it simple and experiment with two policies: one I’m calling a “dense Gaussian policy” and the other I’m calling a “dense policy”. I think these names are technically correct but they also can sound pretty opaque, so I’ll explain what I mean. Check out my code at this link if you’re interested.

The Policies

Both policies are similar to a 1-layer neural network: we compute the output by taking the dot-product of the input with an array of weights, W. In this case, the input is the observations (S) from the environment, and the output is the action we want to take, so the weight array (W) has the shape (observation_dimension, action_dimension).

In the “dense policy” the output of the dot product is the action, so we’re done! In the “dense gaussian policy”, the resulting vector of the dot product between S and W has shape equal to action_dimension and is used as the µ (mu, or mean) vector for a Gaussian distribution. We also store a variance (σ) vector in the layer and then we sample our actions from the resulting Gaussian distribution. Like this:

``````µ = np.dot(weight_array, observations)
action = µ + np.random.randn(env.action_space.shape[0]) * σ``````

I’ll break down the two lines of code above: In line 1, we take the dot product of W and the input observations and get µ (the mean of our distribution). In line 2, we use NumPy’s randn function to sample from a unit Gaussian distribution (mean 0 and variance 1). By adding µ to the sample from randn, we shift the mean from 0 to µ. Then, when we multiply the sample from randn by σ, its variance gets scaled to match σ.

So now, what am I optimizing? I used Optuna to directly optimize each parameter in the weight array. This approach scales really poorly, since Optuna is designed to optimize hyperparameters and it suggests one number at a time. This means you have to use a for loop to fill your weight array one-by-one. But in environments with small vector observations, it’s fast enough. Just know that if you’re here looking for performant, well-written, scalable code, you’re in the wrong place! I cobbled all this together for fun and gave little thought to how good the code actually is. I decided to use CMA-ES1 as my optimization method.

## The Algorithm: CMA-ES

CMA-ES stands for “Covariance Matrix Adaptation Evolution Strategy”. It’s a black-box numerical optimization method. In fact, all evolution strategies are black-box optimization methods. The phrase “black-box” refers to the fact that these methods don’t require derivatives of an objective function in order to optimize it. They’re called “evolution strategies” because they loosely model biological evolution. They stochastically generate a population, evaluate the population on the objective function, and move the population-generating distribution towards the higher-performing members of the population.

If you squint, this kind of mimics natural selection, where the fittest members of a population propagate their traits onwards to the next generation. CMA-ES can also change the variance of the population it generates to find a solution faster, and that’s what the gif at the top is showing. If you want to read more about this topic, David Ha has two great posts talking about evolutionary strategies and using them in RL environments. I also recommend reading the Wikipedia page. If you google around, you’ll find a bunch of resources about the CMA-ES algorithm and evolution strategies in general.

## The Results

This is a mixed bag of results; some great, some not so great. Working with one layer with shape (observation_dimension, action_dimension) really forces us to work with limited representational capacity. Since the policy has so few parameters, it can’t represent very complex relationships. Surprisingly, though, it can still succeed in chaotic and nonlinear environments.

Successes

Check out the inverted double pendulum. All 3-d robotics environments courtesy of Pybullet.

Even though this is a highly unstable and nonlinear system, the optimizer was still able to find a set of weights which can stably balance the pendulum. The policy here gets about 9,300 reward. I believe the maximum possible is 10,000. So it’s not perfect performance, but it’s still really good. I think this is super cool because it’s literally controlled with a 9-parameter fully-connected layer and that layer is optimized using a black-box (i.e. derivative free) optimizer. Compared to the massive networks we’re used to seeing, with thousands, millions, and sometimes billions of parameters it feels almost shocking that so much can be done with 9 parameters.

Just above here is the inverted pendulum swing-up problem. Again, this is an unstable, nonlinear problem. The goal here is to start with the pole below the cart and then to swing it up and balance it on top of the cart. This policy only has 5 parameters! It gets about 700 reward and the maximum possible is 1,000. So it’s definitely not perfect, but it seems clear that the policy learned something useful since in the video it makes multiple attempts to swing the pole up and keep it balanced.

This is a 16 parameter policy trained on Lunar Lander. The environment is modeled after the classic lunar lander game. The goal is simple: land the spaceship between the flags and don’t crash! It has 16 parameters because the action-space is 2 dimensional and the observation space is 8 dimensional. The 2 actions are real-valued numbers with one representing left-right thrust and the other representing bottom rocket thrust. This policy actually solves the environment; the reward here was about 275 and this environment is considered solved after the reward earned is over 200.

This is our last pendulum, but it’s also our most boring one. This is just the standard single inverted pendulum, where the pole starts on top of the cart and the goal is to keep it there. This system is near-linear and, while still unstable, it is certainly more stable than the other pendulums we looked at. This policy has 4 parameters and it solves the environment, earning the maximum reward of 1,000.

Failures

This is a 96 parameter policy that totally failed to learn how to achieve its goal. The environment is called “BipedalWalker” and the goal is for the robot to walk to the end of the level. Instead, our policy just learned to fall forwards. If I gave it more update steps or ran more experiments where I carefully control and anneal the variance of the policy and/or CMA-ES over time, it could maybe solve this environment. Giuseppe Cuccu solved this environment using a tiny, one-layer RNN with 116 parameters. I’m not confident that this environment can be solved with fewer parameters than that, but it might be a fun area to experiment in.

To give you an idea of what a successful BipedalWalker agent looks like, see the video below (I didn’t train this one):

The video below here is arguably a more interesting case of policy failure. This is on the hopper robot environment. The goal is to move forward as far as possible in the time limit. This policy has 45 parameters, since the observation space has 15 dimensions and the action space has 3 dimensions. Obviously, the policy fails at moving forward as far as possible, but it still gets about 1000 reward on the environment (this environment is considered solved above 2500 reward). It earns this reward simply by leaning forward!

## Closing thoughts

I think this was a fun experiment, and if you’re curious and want to try weird stuff like this, I recommend it. But, if you want a performant implementation of CMA-ES and other evolution strategies for RL and for optimization of larger numbers of parameters, you should check out David Ha’s ESTool, the PGPElib library, and the CMA-ES library. I’m sure there are other strong libraries out there for this stuff, but those are three off the top of my head.

These policies could definitely be pushed further with more parameters, and I don’t think it would be very difficult to add more. Since it’s all just dot products, one could write a TransformLayer (or name it whatever you want) whose entire job is to take in the observations and project them to some n-dimensional vector. Then use that vector as input to the policy layer. That would definitely increase the capability of the layers to represent complex relationships and could still be kept small enough to work nicely with Optuna. I didn’t want to do that here because I had too much fun keeping these policies as tiny as possible.

Another way to probably improve the performance is to consider fixing the variance of the CMA-ES algorithm or annealing it on a set schedule over training. This might be hard to do in Optuna, so potentially another option is to schedule the variance of the Gaussian layer. It would be interesting to scale the variance in such a way that when the algorithm seems to be plateauing, turn up the variance and force more exploration in the environment. That might help break free from performance plateaus and maximize reward.

If I were going to push forward on these experiments, I’d stop using Optuna and instead switch to one of the libraries I mentioned above. The policies can still be kept tiny, but using a library with a full implementation of evolution strategies will help accelerate experiments and will likely allow greater control over the optimizer.

I really hope you enjoyed this post! 😃

Previously published at https://themerge.substack.com/p/weird-rl-with-hyperparameter-optimizers

Join Hacker Noon

# Build a cognitive search and a health knowledge graph using AWS AI services

Published

on

Medical data is highly contextual and heavily multi-modal, in which each data silo is treated separately. To bridge different data, a knowledge graph-based approach integrates data across domains and helps represent the complex representation of scientific knowledge more naturally. For example, three components of major electronic health records (EHR) are diagnosis codes, primary notes, and specific medications. Because these are represented in different data silos, secondary use of these documents for accurately identifying patients with a specific observable trait is a crucial challenge. By connecting those different sources, subject matter experts have a richer pool of data to understand how different concepts such as diseases and symptoms interact with one another and help conduct their research. This ultimately helps healthcare and life sciences researchers and practitioners create better insights from the data for a variety of use cases, such as drug discovery and personalized treatments.

In this post, we use Amazon HealthLake to export EHR data in the Fast Healthcare Interoperability Resources (FHIR) data format. We then build a knowledge graph based on key entities extracted and harmonized from the medical data. Amazon HealthLake also extracts and transforms unstructured medical data, such as medical notes, so it can be searched and analyzed. Together with Amazon Kendra and Amazon Neptune, we allow domain experts to ask a natural language question, surface the results and relevant documents, and show connected key entities such as treatments, inferred ICD-10 codes, medications, and more across records and documents. This allows for easy analysis of co-occurrence of key entities, co-morbidities analysis, and patient cohort analysis in an integrated solution. Combining effective search capabilities and data mining through graph networks reduces time and cost for users to find relevant information around patients and improve knowledge serviceability surrounding EHRs. The code base for this post is available on the GitHub repo.

## Solution overview

In this post, we use the output from Amazon HealthLake for two purposes.

First, we index EHRs into Amazon Kendra for semantic and accurate document ranking out of patient notes, which help improve physician efficiency identifying patient notes and compare it with other patients sharing similar characteristics. This shifts from using a lexical search to a semantic search that introduces context around the query, which results in better search output (see the following screenshot).

Second, we use Neptune to build knowledge graph applications for users to view metadata associated with patient notes in a more simple and normalized view, which allows us to highlight the important characteristics stemming from a document (see the following screenshot).

The following diagram illustrates our architecture.

The steps to implement the solution are as follows:

1. Create and export Amazon HealthLake data.
2. Extract patient visit notes and metadata.
3. Load patient notes data into Amazon Kendra.
4. Load the data into Neptune.
5. Set up the backend and front end to run the web app.

## Create and export Amazon HealthLake data

As a first step, create a data store using Amazon HealthLake either via the Amazon HealthLake console or the AWS Command Line Interface (AWS CLI). For this post, we focus on the AWS CLI approach.

1. We use AWS Cloud9 to create a data store with the following code, replacing <<your data store name >> with a unique name:
``aws healthlake create-fhir-datastore --region us-east-1 --datastore-type-version R4 --preload-data-config PreloadDataType="SYNTHEA" --datastore-name "<<your_data_store_name>>"``

The preceding code uses a preloaded dataset from Synthea, which is supported in FHIR version R4, to explore how to use Amazon HealthLake output. Running the code produces a response similar to the following code, and this step takes a few minutes to complete (approximately 30 minutes at the time of writing):

``````{ "DatastoreEndpoint": "https://healthlake.us-east-1.amazonaws.com/datastore/<<your_data_store_id>>/r4/", "DatastoreArn": "arn:aws:healthlake:us-east-1:<<your_AWS_account_number>>:datastore/fhir/<<your_data_store_id>>", "DatastoreStatus": "CREATING", "DatastoreId": "<<your_data_store_id>>"
}
``````

You can check the status of completion either on the Amazon HealthLake console or in the AWS Cloud9 environment.

1. To check the status in AWS Cloud9, use the following code to check the status and wait until `DatastoreStatus` changes from `CREATING` to `ACTIVE`:
``aws healthlake describe-fhir-datastore --datastore-id "<<your_data_store_id>>" --region us-east-1``

1. When the status changes to `ACTIVE`, get the role ARN from the `HEALTHLAKE-KNOWLEDGE-ANALYZER-IAMROLE` stack in AWS CloudFormation, associated with the physical ID `AmazonHealthLake-Export-us-east-1-HealthDataAccessRole`, and copy the ARN in the linked page.
2. In AWS Cloud9, use the following code to export the data from Amazon HealthLake to the Amazon Simple Storage Service (Amazon S3) bucket generated from AWS Cloud Development Kit (AWS CDK) and note the `job-id` output:
``aws healthlake start-fhir-export-job --output-data-config S3Uri="s3://hl-synthea-export-<<your_AWS_account_number>>/export-\$(date +"%d-%m-%y")" --datastore-id <<your_data_store_id>> --data-access-role-arn arn:aws:iam::<<your_AWS_account_number>>:role/AmazonHealthLake-Export-us-east-1-HealthKnoMaDataAccessRole``

1. Verify that the export job is complete using the following code with the `job-id` obtained from the last code you ran. (when the export is complete, `JobStatus` in the output states `COMPLETED`):
``aws healthlake describe-fhir-export-job --datastore-id <<your_data_store_id>> --job-id <<your_job_id>>``

## Extract patient visit notes and metadata

The next step involves decoding patient visits to obtain the raw texts. We will import the following file DocumentReference-0.ndjson (shown in the following screenshot of S3) from the Amazon HealthLake export step we previously completed into the CDK deployed Amazon SageMaker notebook instance. First, save the notebook provided from the Github repo into the SageMaker instance. Then, run the notebook to automatically locate and import the DocumentReference-0.ndjson files from S3.

For this step, use the resourced SageMaker to quickly run the notebook. The first part of the notebook creates a text file that contains notes from each patient’s visit and is saved to an Amazon S3 location. Because multiple visits could exist for a single patient, a unique identification combines the patient unique ID and the visit ID. These patients’ notes are used to perform semantic search against using Amazon Kendra.

The next step in the notebook involves creating triples based on the automatically extracted metadata. By creating and saving the metadata in an Amazon S3 location, an AWS Lambda function gets triggered to generate the triples surrounding the patient visit notes.

## Load patient notes data into Amazon Kendra

The text files that are uploaded in the source path of the S3 bucket need to be crawled and indexed. For this post, a developer edition is created during the AWS CDK deployment, so the index is created to connect the raw patient notes.

1. On the AWS CloudFormation console under the HEALTHLAKE-KNOWLEDGE-ANALYZER-CORE stack, search for kendra on the Resources tab and take note of the index ID and data source ID (copy the first part of the physical ID before the pipe ( | )).

1. Back in AWS Cloud9, run the following command to synchronize the patient notes in Amazon S3 to Amazon Kendra:
``aws kendra start-data-source-sync-job --id <<data_source_id_2nd_circle>> --index-id <<index_id_1st_ circle>>``

1. You can verify when the sync status is complete by running the following command:
``aws kendra describe-data-source --id <<data_source_id_2nd_circle>> --index-id <<index_id_1st_circle>>``

Because the ingested data is very small, it should immediately show that Status is ACTIVE upon running the preceding command.

## Load the data into Neptune

In this next step, we access the Amazon Elastic Compute Cloud (Amazon EC2) instance that was spun up and load the triples from Amazon S3 into Neptune using the following code:

``````curl -X POST -H 'Content-Type: application/json' https://healthlake-knowledge-analyzer-vpc-and-neptune-neptunedbcluster.cluster-<<your_unique_id>>.us-east-1.neptune.amazonaws.com:8182/loader -d '
}'
``````

## Set up the backend and front end to run the web app

The preceding step should take a few seconds to complete. In the meantime, configure the EC2 instance to access the web app. Make sure to have both Python and Node installed in the instance.

1. Run the following code in the terminal of the instance:
``sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000``

This routes the public address to the deployed app.

1. Copy the two folders titled `ka-webapp` and `ka-server-webapp` and upload them to a folder named `dev` in the EC2 instance.
2. For the front end, create a screen by running the following command:
``screen -S back ``

1. In this screen, change the folder to `ka-webapp` and run `npm` install.
2. After installation, go into the file `.env.development` and place the Amazon EC2 public IPv4 address and save the file.
3. Run `npm` start and then detach the screen.
4. For the backend, create another screen by entering:
``screen -S back``

1. Change the folder to `ka-server-webapp` and run `pip install -r requirements.txt`.
2. When the libraries are installed, enter the following code:
1. Detach from the current screen, and using any browser, go the Amazon EC2 Public IPv4 address to access the web app.

Try searching for a patient diagnosis and choose a document link to visualize the knowledge graph of that document.

## Next steps

In this post, we integrate data output from Amazon HealthLake into both a search and graph engine to semantically search relevant information and highlight important entities linked to documents. You can further expand this knowledge graph and link it to other ontologies such as MeSH and MedDRA.

Furthermore, this provides a foundation to further integrate other clinical datasets and expand this knowledge graph to build a data fabric. You can make queries on historical population data, chaining structured and language-based searches for cohort selection to correlate disease with patient outcome.

## Clean up

To clean up your resources, complete the following steps:

1. To delete the stacks created, enter the following commands in the order given to properly remove all resources:
``````\$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-UPDATE-CORE
\$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-WEBAPP
\$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-CORE
``````

1. While the preceding commands are in progress, delete the Amazon Kendra data source that was created:
``````\$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-VPC-AND-NEPTUNE
\$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-IAMROLE
\$ aws healthlake delete-fhir-datastore --datastore-id <<your_data_store_id>> ``````

1. To verify it’s been deleted, check the status by running the following command:
``\$ aws healthlake describe-fhir-datastore --datastore-id "<<your_data_store_id>>" --region us-east-1``

1. Check the AWS CloudFormation console to ensure that all associated stacks starting with `HEALTHLAKE-KNOWLEDGE-ANALYZER` have all been deleted successfully.

## Conclusion

Amazon HealthLake provides a managed service based on the FHIR standard to allow you to build health and clinical solutions. Connecting the output of Amazon HealthLake to Amazon Kendra and Neptune gives you the ability to build a cognitive search and a health knowledge graph to power your intelligent application.

Building on top of this approach can enable researchers and front-line physicians to easily search across clinical notes and research articles by simply typing their question into a web browser. Every clinical evidence is tagged, indexed, and structured using machine learning to provide evidence-based topics on things like transmission, risk factors, therapeutics, and incubation. This particular functionality is tremendously valuable for clinicians or scientists because it allows them to quickly ask a question to validate and advance their clinical decision support or research.

Try this out on your own! Deploy this solution using Amazon HealthLake in your AWS account by deploying the example on GitHub.

Prithiviraj Jothikumar, PhD, is a Data Scientist with AWS Professional Services, where he helps customers build solutions using machine learning. He enjoys watching movies and sports and spending time to meditate.

Phi Nguyen is a solutions architect at AWS helping customers with their cloud journey with a special focus on data lake, analytics, semantics technologies and machine learning. In his spare time, you can find him biking to work, coaching his son’s soccer team or enjoying nature walk with his fami

Parminder Bhatia is a science leader in the AWS Health AI, currently building deep learning algorithms for clinical domain at scale. His expertise is in machine learning and large scale text analysis techniques in low resource settings, especially in biomedical, life sciences and healthcare technologies. He enjoys playing soccer, water sports and traveling with his family.

Garin Kessler is a Senior Data Science Manager at Amazon Web Services, where he leads teams of data scientists and application architects to deliver bespoke machine learning applications for customers. Outside of AWS, he lectures on machine learning and neural language models at Georgetown. When not working, he enjoys listening to (and making) music of questionable quality with friends and family.

Dr. Taha Kass-Hout is Director of Machine Learning and Chief Medical Officer at Amazon Web Services, and leads our Health AI strategy and efforts, including Amazon Comprehend Medical and Amazon HealthLake. Taha is also working with teams at Amazon responsible for developing the science, technology, and scale for COVID-19 lab testing. A physician and bioinformatician, Taha served two terms under President Obama, including the first Chief Health Informatics officer at the FDA. During this time as a public servant, he pioneered the use of emerging technologies and cloud (CDC’s electronic disease surveillance), and established widely accessible global data sharing platforms, the openFDA, that enabled researchers and the public to search and analyze adverse event data, and precisionFDA (part of the Presidential Precision Medicine initiative).

# Huma, which uses AI and biomarkers to monitor patients and for medical research, raises \$130M

Published

on

While much of the world eagerly watches to see if the vaccination rollout helps curb and eventually stamp out Covid-19, one of the companies that has been helping to manage the spread of the virus is announcing a big round of funding on the heels for strong demand for its technology.

Huma, which combines data from biomarkers with predictive algorithms both to help monitor patients, and uses the same technology to help researchers and pharmaceutical companies run clinical trials, has closed an equity round of \$130 million, a Series C that the company can extend to \$200 million by way of a \$70 million debt line if it chooses.

Huma can pick up data that patients contribute via smartphones, or by way of diagnostic devices that measure glucose, blood pressure or oxygen saturation, and the plan will be to use the funding to augment that in a couple of ways: to continue investing in R&D to both expand the kinds of biomarkers that Huma can measure and to work on more research and trials; to continue expanding London-based Huma’s business particularly in newer geographies like the US, alongside a strong wave of business it’s been seeing in Europe, specifically the UK and the DACH region.

The funding includes a number of high-profile strategic and financial backers that speak to some of the opportunities coming down the pike. Co-led by Leaps by Bayer, the VC division of the pharmaceutical and life sciences giant, and Hitachi Ventures, it also includes Samsung Next, Sony Innovation Fund by IGV (one of Sony’s investment funds), Unilever Ventures and HAT Technology & Innovation Fund, Nikesh Arora (the former president of SoftBank and ex-Google exec) and Michael Diekmann (Chairman of Allianz) all in the round. Bayer also led Huma’s \$25 million Series B in 2019, when the startup was still called Medopad.

Medopad rebranded to Huma last year in April, just as the Covid-19 pandemic was really taking hold across the world. In the year since, CEO and founder Dan Vahdat said that the company has been on a growth tear, working hard across the spectrum of areas where its technology could prove useful, since it provides a bridge to monitoring patients remotely, at a time when it’s been significantly more challenging to see people in person.

“Last year when the pandemic first hit, it made everyone’s lives miserable not just from the health aspect but also research aspect,” he said. “The whole idea is how to decentralize care and research.”

Its work has included partnering with the NHS early on to ship some 1 million oxygen saturation devices to monitor how patients’ levels were faring, since that was early on discovered to be a leading indicator of whether a patient would need urgent medical care: this was essential way to triage people remotely at a time when hospitals were quickly getting overwhelmed with people. Vahdat said this directly helped reduce readmissions by one-third.

It is also playing a role in helping to monitor all the many patients who had been due to have operations but found those postponed. In the UK alone, there were 4.8 million people waiting as a result for their procedures, “a shocking number,” Vahdat said. How to handle that queue? The idea here, he said, is that when you are a patient at home waiting for cardiac surgery, your condition might deteriorate quickly. Or it may not. Huma set up a system to provide diagnostics for those patients to monitor how they were doing: signs that they were not doing well meant they would get moved up and brought in to be seen by a specialist before they deteriorated and became urgent rather than managed cases.

Alongside this clinical work, Huma has also been working on a number of trials and research, including a phase 4 study on one of the Covid-19 vaccines that has been getting distributed under emergency authorization (this is a regulatory process that comes in the wake of that authorization).

It’s also been continuing to contribute essential data to ongoing medical research. One that the company can disclose that is not directly related to Covid-19 is a heart study for Bayer; and one that is related to Covid-19 — finding better biomarkers (specifically in looking at digital phenotypes) to detect Covid-19 infections earlier — called the Cambridge Fenland study.

This long list of work has meant that Huma still has much of its Series B in the bank, and so it’s also been turning its attention to humanitarian work, donating resources to India and other countries still in the throes of their own Covid-19 crises.

Although startups that bridge the worlds of medicine and technology can be very long plays, the last year has shown not just how vital it is to invest in the smartest of these to see out their ambitions for the greater good of all of us, but that, when they do have their breakthroughs, it can prove to be a huge thing for the companies and investors. BioNTech’s last year has been nothing short of a stratospheric turnaround, going from a loss-making business to one producing more than \$1 billion in profit in the last quarter on the back of its Covid-19 vaccine research and work with Pfizer.

It’s for that reason that so many investors are keen to continue supporting the likes of Huma and the insights it provides.

“Aligned with the vision of Leaps by Bayer, Huma’s expertise and technology will help drive a global paradigm shift towards prevention and care and may boost research efforts using data and digital technology,” said Juergen Eckhardt, Head of Leaps by Bayer, in a statement. “We invest into the most disruptive technologies of our time that have the potential to change the world for the better. As an early investor into Huma we know how perfectly the company fits into that frame as one of the leading digital innovators in healthcare and life sciences.”

“Huma has built a comprehensive remote patient monitoring platform and established a strong track-record and we are excited to be working with Huma to bring its world-leading health technology to new markets in Asia. We believe that together we can advance new digital health products to power better care and research for all,” added Keiji Kojima, EVP of Hitachi’s Smart Life division.

# Elderly caretech platform Birdie gets \$11.5M Series A led by Index

Published

on

SaaS-maker Birdie has closed an \$11.5 million Series A round of funding led by Index Ventures. Existing investor Kamet Ventures also participated.

The UK-based caretech startup has raised a total of \$22.9M since being founded back in 2017 (a 2018 raise that was called a Series A at the time is now being classed as a seed expansion). It’s focused on building tools for social care providers to drive efficiencies in a chronically under resourced sector.

Birdie isn’t a care provider itself (so it’s not a direct competitor to a startup like Lifted); rather it aims to support care providers with a suite of digital tools intended to reduce admin costs and makes it easier to manage the care being provided to individuals — doing away with the need for paper-based records, and enabling real-time visibility such as via carer check-ins and medication-related notifications.

The wider mission is for the platform to support care providers to offer more co-ordinated, personalized and — the hope is — preventative care so that older adults can be supported to live for longer in their own homes.

“Technology can completely transform the way we look after the elderly and help them to age at home much longer, healthier and happier,” says CEO and co-founder Max Parmentier, explaining the founding premise. “We position ourselves as a solution to uniquely offer a full support for the elderly to age at home… So we started off with the people closest to the elderly and caring for the elderly which are the care providers. And when we look at how these providers are operating they are extraordinary committed, and very much involved in their work, but the care delivered is very uncoordinated, reactive and sometimes very generic.

“We felt that we could go way beyond — in terms of technology — becoming the operating system to be much more efficient in the way they deliver care but also to significantly increase the quality of the care delivered.”

What’s the draw for VCs to invest in such an under-resourced market? “There’s macro trends which are unavoidable. I agree with you that it’s vastly underfunded but it’s just unsustainable,” he argues. “There is clearly an argument to say that whether VCs or investors are interested in this industry or not it’s going to get bigger. And one way or another we’ll have to find some funding mechanism to pay for it.”

“Today already we hear horrible stories about older people not being taken care of properly. I think what got particular Index excited is really the opportunity to [tell a positive story],” he goes on. “I’m quite an optimistic person. I do believe that actually you could very much craft a much happier path in terms of ageing which is actually more affordable — because it doesn’t cost as much because you really lower the healthcare costs if you really tailor these packages better and tailor the care much better. And you can also use technology to make it more personalized, more preventative.”

By simplifying and streamlining data capture around elderly care via a digital platform, information about the care being delivered can be structured in a way that helps reduce errors (such as from handwritten notes leading to administering the wrong medication) and allows for problems to be spotted early when an intervention may be highly beneficial, is the contention.

Parmentier gives the example of early signs of a urinary tract infection which, if picked up on — by spotting telltale signs in the data — can be treated simply at home with antibiotics. But if not an elderly person may end up in hospital, with all the associated risks of a far worse outcome.

Birdie can also supply connected hardware like motion sensors to its care provider customers so that its platform can monitor frail elderly adults who may be at risk of falling. Although Parmentier emphasizes that such hardware is an optional component of the platform — and is only installed with the full knowledge and consent of the care recipient.

The business is focused on “serving the interests and the rights of these older adults and no one else”, he says, confirming that care recipients’ data is not shared with any third parties unless it’s directly related to the delivery of their care.

Birdie’s team (Image credits: Birdie)

Having a digital platform-level view into an individual’s care obviously offers increased visibility vs paper-based records. It also means real-time data can be shared — such as with close family members who may want the reassurance of knowing when their loved one has received a visit or taken their medication, and so on. (Again, though, only with the proper consents.)

“There is a positive narrative which is that ageing is actually great,” Parmentier suggests. “If you’re in good health this part of your life is probably one of the most exciting. And this is really the spin we should give in terms of story but also we should empower these older adults with the right support to take that happy path.”

To date, Birdie has partnered with almost 500 providers across the U.K. — and currently its platform is being used to support the care of more than 20,000 older people every week.

Growth has been 8x over the past 12 months, per Parmentier, as the coronavirus pandemic has accelerated demand for in-home elderly care. The new funding will go on accelerating growth in the U.K., though he also says it has its eye on other geographies and sees potential to expand internationally.

“Phase one [of the business] is how can we empower these care providers to be better at what they do?” he says. “Because I really believe that there’s am army of care givers who are so committed and if we can help them be better at what they do that’s beautiful.”

Having structured data on elderly care provides a foundation for conducting research that could further the ‘preventative’ care component of the mission — and Birdie is taking some tentative steps in that direction via some project partnerships.

Such as one into polypharmacy (i.e. concurrent use of medications which can have negative clinical consequences) with U.K.-based AI company Faculty.

“There’s very little known as to what impact medication has on older adults health. If you think about it we just have pharma companies doing trials and then flagging secondary symptoms up when they arise and then doctors prescribe that. The reality is for elderly people — because usually they combine different medications — the symptoms and the damage to health can be greater,” he explains.

“What we’ve done with Faculty is to look at what is the medication treatment of an older adult and what is the clinical observations from carers following these medication treatments. So do we see that typically there’s less appetite to eat or drink, or complaints about pains and so on. And do we see correlations with the actual medication treatment prescribed?”

The polypharmacy research is at an early stage but he says the hope is they will be able to build an AI model that can generate warnings for a prescribing clinician if a particular medication regime has been linked to outcomes that may damage health or otherwise hamper healthy caring for an individual.

On the research side, Birdie’s website notes that it’s using “anonymized” data in these exploratory efforts — which is a claim that merits scrutiny given that medical data is both very sensitive and notoriously difficult to robustly (irreversibly) anonymize.

Asked about this, Parmentier says that for the moment its research efforts entail correlating data on different older adults from different care providers, and that the data being pooled is limited to specifically relevant info (i.e. depending on the research project) — removing “all the un-needed data”, as he puts it.

He says it is not, for example, currently combining any of the data it holds with National Health Service (NHS) patient data — which he acknowledges could pose a major risk of re-identification. But he also says Birdie does want to go there because it believes that combining more data-sets could help it further preventative care research.

“The risk is when you pool your data with any third party data-set such as the NHS for instance. That is really risky… because there’s always a way to tie it back. So we’ve been keeping away from that for the moment,” he tells TechCrunch.

“I think it can really improve our preventative models but we need to do that only under very strict conditions that the anonymization is bullet-proof,” he adds. “We haven’t done that yet and we’re exploring ways to do it. But we’re going to very cautious about it. So for the moment there’s no risk really because we’re not mixing data-sets of the same patient. But if we were to integrate with third parties’ systems the risk will rise — and we’ll need to address it very clearly.”

Parmentier also offers a glimpse of an ambitious potential second phase of the business — where Birdie believes it will be able to coach older adults themselves (and/or their family members who are acting as care givers), i.e. enabled by its platform-level view of best practice (and by being able to fold in data-fuelled research into preventative care AI models).

To get there will require not, just a lot of data, but a sectoral shift toward a model of care delivery focused on “value-based healthcare”; where the provider is billed not for hours of care given but on health/quality of life outcomes. So the transformative vision of highly scalable, data-enabled elderly home care is certainly not going to arrive overnight.

In the meanwhile Birdie’s business remains firmly in phase one: Building support tools to drive efficiency and quality for an under-resourced sector.

“We see the same problem everywhere,” adds Parmentier. “Today already we don’t look after our elderly properly… Today they cost us about 60% of our healthcare costs. Tomorrow is going to be much worse. We need to channel more investment into this industry — in terms of new ways of operating, technology, and really innovation is key to move towards better models where it’s more preventative, more personalized, more outcome based — because that’s the solution. It’s going to lower the cost base, it’s going to improve the health outcomes.”

Commenting in a statement, Stephane Kurgan, venture partner at Index Ventures, added: “Our ageing society and increasing healthcare costs require us to rethink the way we care for frailer populations like the elderly. Technology gives us the tools, as the care sector has remained widely paper-based and is ripe for disruption.

“By investing in caretech with Birdie, we are investing in solving the daily challenges of the care community. We firmly believe in Birdie’s vision to make care more personalised and more preventative so that older people can age at home longer, healthier and happier. We’ve been impressed by Birdie’s traction and the calibre of its team, and are very excited to embark on this journey with them.”

# Improve the streaming transcription experience with Amazon Transcribe partial results stabilization

Published

on

Whether you’re watching a live broadcast of your favorite soccer team, having a video chat with a vendor, or calling your bank about a loan payment, streaming speech content is everywhere. You can apply a streaming transcription service to generate subtitles for content understanding and accessibility, to create metadata to enable search, or to extract insights for call analytics. These transcription services process streaming audio content and generate partial transcription results until it provides a final transcription for a segment of continuous speech. However, some words or phrases in these partial results might change, as the service further understands the context of the audio.

We’re happy to announce that Amazon Transcribe now allows you to enable and configure partial results stabilization for streaming audio transcriptions. Amazon Transcribe is an automatic speech recognition (ASR) service that enables developers to add real-time speech-to-text capabilities into their applications for on-demand and streaming content. Instead of waiting for an entire sentence to be transcribed, you can now control the stabilization level of partial results. Transcribe offers 3 settings: High, Medium and Low. Setting the stabilization “High” allows a greater portion of the partial results to be fixed with only the last few words changing during the transcription process. This feature helps you have more flexibility in your streaming transcription workflows based on the user experience you want to create.

In this post, we walk through the benefits of this feature and how to enable it via the Amazon Transcribe console or the API.

## How partial results stabilization works

Let’s dive deeper into this with an example.

During your daily conversations, you may think you hear a certain word or phrase, but later realize that it was incorrect based on additional context. Let’s say you were talking to someone about food, and you heard them say “Tonight, I will eat a pear…” However, when the speaker finishes, you realize they actually said “Tonight I will eat a pair of pancakes.” Just as humans may change our understanding based on the information at hand, Amazon Transcribe uses machine learning (ML) to self-correct the transcription of streaming audio based on the context it receives. To enable this, Amazon Transcribe uses partial results.

During the streaming transcription process, Amazon Transcribe outputs chunks of the results with an `isPartial` flag. Results with this flag marked as `true` are the ones that Amazon Transcribe may change in the future depending on the additional context received. After Amazon Transcribe classifies that it has sufficient context to be over a certain confidence threshold, the results are stabilized and the `isPartial` flag for that specific partial result is marked `false`. The window size of these partial results could range from a few words to multiple sentences depending on the stream context.

The following image displays how the partial results are generated (and edited) in Amazon Transcribe for streaming transcription.

Results stabilization enables more control over the latency and accuracy of transcription results. Depending on the use case, you may prioritize one over the other. For example, when providing live subtitles, high stabilization of results may be preferred because speed is more important than accuracy. On the other hand for use cases like content moderation, lower stabilization is preferred because accuracy may be more important than latency.

A high stability level enables quicker stabilization of transcription results by limiting the window of context for stabilizing results, but can lead to lower overall accuracy. On the other hand, a low stability level leads to more accurate transcription results, but the partial transcription results are more likely to change.

With the streaming transcription API, you can now control the stability of the partial results in your transcription stream.

Now let’s look at how to use the feature.

## Access partial results stabilization via the Amazon Transcribe console

To start using partial results stabilization on the Amazon Transcribe console, complete the following steps:

1. On the Amazon Transcribe console, make sure you’re in a Region that supports Amazon Transcribe Streaming.

For this post, we use `us-east-1`.

1. In the navigation pane, choose Real-time transcription.
2. Under Additional settings, enable Partial results stabilization.

You can choose between three levels:

• High – Provides the most stable partial transcription results with lower accuracy compared to Medium and Low settings. Results are less likely to change as additional context is gathered.
• Medium – Provides partial transcription results that have a balance between stability and accuracy
• Low – Provides relatively less stable partial transcription results with higher accuracy compared to High and Medium settings. Results get updated as additional context is gathered and utilized.

1. Choose Start streaming to play a stream and check the results.

## Access partial results stabilization via the API

In this section, we demonstrate streaming with HTTP/2. You can enable your preferred level of partial results stabilization in an API request.

You enable this feature via the `enable-partial-results-stabilization` flag and the `partial-results-stability` level input parameters:

``````POST /stream-transcription HTTP/2 x-amzn-transcribe-language-code: LanguageCode x-amzn-transcribe-sample-rate: MediaSampleRateHertz x-amzn-transcribe-media-encoding: MediaEncoding x-amzn-transcribe-session-id: SessionId x-amzn-transcribe-enable-partial-results-stabilization= true
x-amzn-transcribe-partial-results-stability = low | medium | high
``````

Enabling partial results stabilization introduces the additional parameter flag `Stable` in the API response at the item level in the transcription results. If a partial results item in the streaming transcription result has the `Stable` flag marked as `true`, the corresponding item transcription in the partial results doesn’t change irrespective of any subsequent context identified by Amazon Transcribe. If the `Stable` flag is marked as `false`, there is still a chance that the corresponding item may change in the future, until the `IsPartial` flag is marked as `false`.

The following code shows our API response:

``````{ "Alternatives": [ { "Items": [ { "Confidence": 0, "Content": "Amazon", "EndTime": 1.22, "Stable": true, "StartTime": 0.78, "Type": "pronunciation", "VocabularyFilterMatch": false }, { "Confidence": 0, "Content": "is", "EndTime": 1.63, "Stable": true, "StartTime": 1.46, "Type": "pronunciation", "VocabularyFilterMatch": false }, { "Confidence": 0, "Content": "the", "EndTime": 1.76, "Stable": true, "StartTime": 1.64, "Type": "pronunciation", "VocabularyFilterMatch": false }, { "Confidence": 0, "Content": "largest", "EndTime": 2.31, "Stable": true, "StartTime": 1.77, "Type": "pronunciation", "VocabularyFilterMatch": false }, { "Confidence": 1, "Content": "rainforest", "EndTime": 3.34, "Stable": true, "StartTime": 2.4, "Type": "pronunciation", "VocabularyFilterMatch": false }, ], "Transcript": "Amazon is the largest rainforest " } ], "EndTime": 4.33, "IsPartial": false, "ResultId": "f4b5d4dd-b685-4736-b883-795dc3f7f636", "StartTime": 0.78
}
``````

## Conclusion

This post introduces the recently launched partial results stabilization feature in Amazon Transcribe. For more information, see the Amazon Transcribe Partial results stabilization documentation.

To learn more about the Amazon Transcribe Streaming Transcription API, check out Using Amazon Transcribe streaming With HTTP/2 and Using Amazon Transcribe streaming with WebSockets.