Skip to main content

Blog

Learn About Our Meetup

5000+ Members

MEETUPS

LEARN, CONNECT, SHARE

Join our meetup, learn, connect, share, and get to know your Toronto AI community. 

JOB POSTINGS

INDEED POSTINGS

Browse through the latest deep learning, ai, machine learning postings from Indeed for the GTA.

CONTACT

CONNECT WITH US

Are you looking to sponsor space, be a speaker, or volunteer, feel free to give us a shout.

Author: torontoai

Empowering wheelchair users with a socially assistive robot running on Amazon Machine Learning

Loro is a socially assistive robot that helps users with physical limitations to more robustly experience their worlds by assisting with seeing, sensing, speaking, and interacting with surroundings.  Loro uses a range of AWS artificial intelligence (AI) and especially machine learning (ML) services to enable its broad range of use cases.

Wheelchair users and others without full physical mobility face more than physical barriers; social interactions and personal health and safety are additional ongoing challenges in their lives. Inspired by their wheelchair-bound friend and mentor Steve Saling, Loro co-founders David Hojah and Johae Song sought to create a socially assistive robot to alleviate these challenges. In CTO David’s words, “We wanted Loro to be a friendly companion on your shoulder like a parrot.”

This “parrot” and its companion app are powered entirely by AWS AI/ML.  Among the services that work in concert to give Loro its assistive abilities are Amazon SageMaker and AWS DeepLens, as well as a wide combination of Amazon Comprehend, Amazon Lex, Amazon Polly, Amazon Rekognition, Amazon Transcribe, Amazon Translate, and Amazon Textract.

Loro itself is about a foot tall and is designed to be affixed to the side of a wheelchair. “We started with just the idea of a camera attached to the wheelchair, to give people a panoramic view so they can navigate easily,” Hojah explained to TechCrunch in a recent interview. “We developed from that idea after talking with mentors and experts; we did a lot of iterations and came up with the idea to be smarter, and now it’s this platform that can do all these things.”

By “all these things,” Hojah is referring to Loro’s constantly expanding set of offerings, which currently includes helping its users to see, sense, listen, speak, interact with surroundings, and access information.  The robot uses a small camera and a built-in video screen to provide users a panoramic view of their surroundings. Using Amazon Rekognition, it can identify the faces of people in its 360-degree field of view and label them to help users keep track of their names. The camera also enables a user to navigate by using gaze-tracking.  Additional features include helpful tools like a flashlight and a laser pointer to assist with gesturing.

“Furthermore, Loro has a ‘Follow Mode’ based on face recognition that allows it to rotate automatically to follow the person who is moving in front of a wheelchair user without any manual input to control the camera view.  It is a wonderful tool to interact with the people who they really care about,” comments Hojah.

Loro also incorporates emotion recognition, making it able to identify the emotional statues of the patients, caregivers and the people who are around the end users. With Amazon SageMaker Reinforcement Learning, the bot continuously improves its emotional detection especially of people it encounters frequently.  Separately, Loro uses Amazon SageMaker to predict the appearance and emotion of specific people based on the surrounding context.

Many Loro users are non-verbal, so Loro uses Amazon Lex and Amazon Polly work in conjunction to understand and participate in conversations on their behalf.  It displays the speech it hears as text on its screen. Users can type on the screen to have Polly assist them in speaking their responses.  Additionally, Loro uses Amazon Lex and Amazon SageMaker to understand the sounds in its environment and determine whether it needs to take action based on them.  For example, if it hears a doorbell, it prompts its user with a verbal question and on-screen button allowing them to decide if they want to navigate toward the door.  This functionality also plays a role in helping keep users safe, as it can alert caregivers if a user needs assistance. In the future, Loro will be able to engage seamlessly with a large number of smart home devices (beyond the light switch and temperature control that it already offers).

In addition to providing an intuitive, inclusive, and user-friendly experience, Loro is designed to emphasize privacy. Amazon Cognito ensures that Loro’s user-signup and access control processes are completely secure.  The robot also fully encrypts all data that it sends over the internet and stores in the cloud (using Amazon S3).

The Loro solution and the company of innovators behind it have been recognized across the globe for the compassion-driven product.  Hojah describes the success as “like I dreamed, it’s a testimony to the power of technology mixed with good ideas.”  With AWS as Loro’s exclusive AI/ML platform, the technology-assisted care robot is indeed a dream come true.


About the Author

Marisa Messina is on the AWS ML marketing team, where her job includes identifying the most innovative AWS-using customers and showcasing their inspiring stories. Prior to AWS, she worked on consumer-facing hardware and then university-facing cloud offerings at Microsoft. Outside of work, she enjoys exploring the Pacific Northwest hiking trails, cooking without recipes, and dancing in the rain.

 

 

 

[D] Has anyone used continuous RL algorithms to output the parameters of a probability distribution that actions are then sampled from

So I’m working on a problem where I need an agent to perform multiple different actions at each time step. A solution I have in mind is to have the agent output the mean and covariance of a gaussian distribution and then sample the actions from the Gaussian distribution. Has anyone seen anything like this? Does this seem like an immediately bad idea?

submitted by /u/iamiamwhoami
[link] [comments]

[P] StarAi: Deep Reinforcement Learning Course

Way back in 2017 when Deepmind released their PySC2 interface – we thought it would be a fantastic opportunity to create a competition to help accelerate the current state of the art in ML.

We thought that such a competition would need a big $ prize pool in order to attract talent to try help solve the “Starcraft problem”. We tried to copy the model of the original Xprize and use insurance bonds to try finance the $ prize purse. This document, literally bounced around to insurance brokers all around the world- but we got no takers :). Lucky for us – as we all know by now Deepmind more or less solved the Starcraft problem this year.

One thing we realised, early circa 2018 is that there were no bringing RL down to earth courses out there to help people get involved in the envisioned Starcraft competition. So we went ahead and made it ourselves 🙂

I know that other great resources such as OpenAi’s spinning up have come out since then, but we would like to present our work and open source it to the community. We hope this content inspires someone out there to do great things!

https://www.starai.io/

.

submitted by /u/sigmoidp
[link] [comments]

[R] Learning Explainable Models with Attribution Priors

Paper: https://arxiv.org/abs/1906.10670

Code: https://github.com/suinleelab/attributionpriors

I wanted to share this paper we recently submitted. TL;DR – the idea is that there has been a lot of recent research on explaining deep learning models by attributing importance to each input feature. We go one step farther and incorporate attribution priors – prior beliefs about what these feature attributions should look like – into the training process. We develop a fast, differentiable new feature attribution method called expected gradients, and optimize differentiable functions of these feature attributions to improve performance on a variety of tasks.

Our results include: In image classification, we encourage smoothness of nearby pixel attributions to get more coherent prediction explanations and robustness to noise. In drug response prediction, we encourage similarity of attributions among features that are connected in a protein-protein interaction graph to achieve more accurate predictions whose explanations correlate better with biological pathways. Finally, with health care data, we encourage inequality in the magnitude of feature attributions to build sparser models that perform better when training data is scarce. We hope this framework will be useful to anyone who wants to incorporate prior knowledge about how a deep learning model should behave in a given setting to improve performance.

submitted by /u/gabeerion
[link] [comments]

Churn Analytics: from data analysis to Machine learning

Churn Analytics: Data Analysis to Machine learning

Customer is one of the most precious resources in any business, acquiring clients can time consuming and expensive. Retaining the most profitable clients can be one of the best strategies businesses can have. Identifying the clients before they leave would be crucial. that’s were the churn analysis comes very handy in the Data Science.

The business or organizations are interested in know the cluster/segment/group of the clients who is like to leave. retention is more cost-effective than acquiring a new customer. there is always a cost & risk involved in acquiring a new client. here is an example of churn analytics & Applied Machine Learning on a banking client dataset.

Data

The dataset comes from the Kaggle, and it is related to European banking clients of counties like France, Germany, and Spain. The classification goal is to predict whether the client will churn (1) or stay (0). The dataset can be downloaded from here.

Input Variables

RowNumber: each row consist of one client information (numeric)

CustomerId: unique identifier for customers (numeric)

Surname: last name of the client (categorical)

CreditScore: Credit score of the client(numeric)

Geography: the territory of the customers (categorical)

Gender: male or female (categorical)

Age: age of the client (numeric)

Tenure: the time with the bank as a client (numeric)

Balance: balance (numeric)

NumOfProducts: How many accounts, bank account affiliated products the person has (numeric)

HasCrCard: the person has a credit card or not (categorical)

IsActiveMember: active product user with transaction vs no activity or transaction (categorical)

EstimatedSalary: estimated salary income or each client (numeric)

Exited: attrition, Did they leave the bank after all? Yes (1), No (0) (categorical)

Predict variable (desired target):

Exited Yes (1)— has the client churned? (binary: “1”, means “Yes”, “0” means “No”)

Data Preprocessing

I have used pandas for data preprocessing, the data set came with column labels and each row represents single client data. In terms of missing values or duplicates (a rare case in real-world data) came pretty clean.
besides python, pandas, and sk-learn, Cloud AWS S3, EC2, Linux, Excel & Tableau public is being used for this end to end project

AWS Steps:

  1. Start an EC2 instance, install all relevant libs with anaconda distribution & Jupyter notebook (use Linux CentOS)
  2. Open S3 bucket
  3. Export the Data to S3
  4. Mount Data on EC2
  5. Clean, Explore Analyse, model the data using Python
  6. Connect Tableau to S3 for Dashboarding and Reporting/ alternatively AWS Quicksight can be used

Pandas Dataframe

Pandas dataframe

Snapshot of the Data

First 5 rows of the data with labels

Statistical Summary

Feature Engineering:

Finding Correlated Features

It shows that none of the features are highly correlated with each other

Some of the features Geography, Gender, Surname came of as pandas object, some rowNumber, CustomerId, Creditscore, Age, Tenure, NumOfProducts, HasCrCard, IsActiveMember came as an integer. those columns need to be feature engineered for machine learning. Transformed objects & int features into floats & also created new encoded features for Geography, Gender.

Insights & Analytics:

Here are some of the Insights drawn from the dataset (using Tableau public)

  1. The proportion of Churn to Non-Churn

20% Churn /Attrition

Approx. 20% churn/attrition rate

2. Gender Proportion to Churn

Female churners are higher, the mean of female churn 0.250715 where the male is 0.164559
Female customer is more likely to churn compared to male

3. Countrywise churn

Mean of country wise churn shows Germany has a higher churn compared to France and Spain

4. Does the Number of Products affect Churn?

A client with multiple products are less likely to churn where a single product holder has the highest churn

5. Does the Balance have any influence on Churn?

Customer with higher balances showing a less likelihood of Churn

Dashboard:

The dashboard shows overall presentation/summary of the features influencing the attrition rate, some of the most influential features which affecting the churn are number of products, credit card, inactive, country, credit score, balance, Gender, age range

The link to the public interactive dashboard

https://public.tableau.com/profile/tests#!/vizhome/ProductsVSCHURN/ChurnAnalyticsDashboard

Model Building

Training the model

Training set uses 80% of the data, rest for test set

Testing the model

20% of the data is used for test set

Prediction using Machine Learning

Logistic Regression

It is a classification algorithm that is used to predicting the probability of a categorical dependent variable in Machine Learning. In logistic regression, the dependent variable is a binary variable that contains data coded as 1 (yes, churn) or 0 (no Churn.). In other words, the logistic regression model predicts P(Y=1) as a function of X.

We are trying to predict whether the clients are like to leave or stay, the outcome is binary. here the logistic algorithm statistically analyzing the features to determine whether a client will churn or not

Here is the application of the algorithm

DecisionTree

Decision Trees (DTs) are a non-parametric supervised learning method used for classification and regression. The goal is to create a model that predicts the value of a target variable by learning simple decision rules inferred from the data features.

Here the decision tree representing boolean function (Y/N) as binary whether the client will churn or not

Gradient Boosting | Gradient Boosting Machine (GBM)

Here Gradient boosting classifying the outcome to whether a client will churn or not, it is a predictive model in the form of an ensemble uses decision trees.

Model Performance:

Modeling was applied on multiple machine learning algorithms with fine-tuning, here are some of the outcome of the model in terms of accuracy scores

•Logistic Regression 78.65%

•Decision Tree 79.45%

•Random Forest 84.85%

•SVM accuracy 79.80%

•Gradient Boosting 86.35%

•AdaBoost 86.35%

The algorithms gave the higher accuracy score are Gradient Boosting, AdaBoost compared to Decision Tree & Logistic regression

Further Reading:

  1. The data set: from Kaggle
  2. The Dashboard: tableau public
  3. A Survey on Customer Churn Prediction using Machine Learning Techniques: The paper reviews the most popular machine learning algorithms used by researchers for churn predicting
  4. Decision Tree: algorithm
  5. Github: githib repo
  6. Linkedin: linkedin page

[D] How to deal with adding new data and new labels to existing models

Say you work at a company that identifies humans. You start off with a dataset with pictures of humans and bounding boxes. The company becomes a huge success and you want to develop your product further. Now you also want to identify eyes and ears, so you make a dataset for that. You have really struck gold, the market is going wild for your product, so you decide to add a new category, indicators of whether or not the human is ill.

My question is, how do you deal with this kind of growth in ML products?

For every category you add, you have to add annotations to the dataset. This can be a tremendous amount of work and might not be feasible to backfill the data you already have with the new labels. I have two suggestions for how to deal with this, you only annotate new data and then train the model in two phases. First phase you train the model on only detecting humans, next phase you add outputs for eyes and ears and fine tune on the rest of the data.

An other way you could do it is to train two separate models, one for humans and one for eyes/ears. Depending on your domain, you might want to have everything in one model if you have real time constraints, so multiple models might not be favorable.

Is there anywhere I can read more about how to deal with these kinds of issues? Do you guys have any experience in dealing with issues like this?

submitted by /u/mlaway
[link] [comments]