Connect with us


Researcher Interview: Ziv Epstein, Research Associate, MIT Media Lab  

Researcher of AI and Social Media Has Ideas on Reducing Social Media Misinformation  Zivvy Epstein is a PhD student in the Human Dynamics group of the MIT Media Lab. His work integrates aspects of design and computational social science to model and understand cooperative systems. He focuses on new challenges and opportunities that emerge from a […]



Providing an “accuracy nudge” to users of social media reduces the spread of misinformation, finds researcher Ziv Epstein of MIT. (Credit: Getty Images) 

Researcher of AI and Social Media Has Ideas on Reducing Social Media Misinformation 

Ziv Epstein, Research Associate, Human Dynamics Group, MIT Media Lab

Zivvy Epstein is a PhD student in the Human Dynamics group of the MIT Media Lab. His work integrates aspects of design and computational social science to model and understand cooperative systems. He focuses on new challenges and opportunities that emerge from a digital society, particularly in the domains of artificial intelligence and social media. His research centers around creating new technologies and insights that make the internet a better place. In a new study, Who gets credit for AI-generated art?, published in iScience, Epstein, his advisor Prof. David Rand, and their coauthors focused on how credit and responsibility should be allocated when AI is used to generate art. Epstein also creates digital art. His personal website can be found here and his Google Scholar page can be found here.  

AI Trends: In the paper published in Science, you warned about the danger of anthropomorphizing AI. What are those dangers? 

Zivvy Epstein: The thing we’re worried about is how anthropomorphizing and AI can change how people allocate credit and responsibility to the human actors involved in situations when the AI is of moral consequence. 

So as we’re entering this world where AI is more and more a part of our lives, we have self-driving cars, AI is in our phones, we’re interacting with AI all the time and AI is making more high stakes decisions of real impact. What we’re worried about is when you anthropomorphize an AI, and that AI system does something bad, instead of holding the people who created that AI and maybe should be held responsible, instead the AI is kind of perceived as the one to be blamed. So it’s this problem of allocation of responsibility and credit.  

You use the term Moral Crumple Zone in the paper. Could you describe what that is?  

Madeline Eilish over at Oxford coined the term, which is this idea that oftentimes responsibility can be misattributed to humans who have limited control over a situation. If you think about, for example, the crumple zone in a car, it’s that zone around the car that crumples if it crashes and absorbs the impact, but protects the car itself. In that way human people who are accidentally or unintentionally around the associated technical system bear the brunt of the moral responsibility of the system. 

For example, I’m sure we’ve all experienced being at the airports and our flight is canceled and it’s not anyone’s fault per se, right? Many things that go wrong for your flight to be canceled. But someone gets up and starts screaming at the flight attendant. It’s not their fault, but there’s the human there. As such, they bear the brunt of the responsibility in that moment and assuage the person of their anger. This is very much saying that humans play a powerful role, and anthropomorphized agents play a powerful role in being the people that we point at when we want to blame someone. We’re very bad at blaming systems. We’re very good at blaming individuals. 

From another term in the paper, what is mind perception? 

Mind perception is ascribing mental capacities to other agents and other entities. This is the extent to which we endow other things. They could be people, they could also be inanimate objects with the capacity of a mind, the ability for mental cognition and understanding. The interesting layer of mind perception is how it maps to moral reasoning. In a very influential paper, Kurt Gray and other authors argue that mind perception is the essence of moral judgment. 

They argue that mind perception, the attribution of the mind, is the key ingredient for morality: There is no morality without the attribution of a mind to the other. In particular, they state that moral judgment is rooted in the specific cognitive templates of two different perceived minds. One that is an intentional agent. That’s doing, acting upon a separate suffering moral patient. The second is your patiency, which is your capacity to experience and be the subject of suffering. In that way those two dimensions of mind perception, agency and patiency, are the key driving ingredients of how humans think about moral judgments. That’s very much an idea from moral psychology that is really interesting when you think about it in light of AI.  

Can AI systems author anything?

It really depends on what you mean by author. This is where people get hung up because if by author, you mean simply produce or generate, then the answer is yes. But oftentimes when we use the word author and often when philosophers and artists use it, author actually has a social connotation. So authoring means producing something for an audience and understanding and having responsibility over what you authored and thinking about how that piece of content you author will play among your peers. In that way, authorship is a very social phenomenon. As such the extent to which AI systems can author anything depends directly on the extent to which AI systems can be social agents, can engage in meaningful social interactions. 

Today, in the year of our Lord 2020, the answer is a resounding no, AI systems do not express meaningful sociality. We have chatbots here and there, but ultimately we do not have meaningful social interactions with AI systems. In the coming future I think a lot of people are really interested in that as a possibility. Especially as we gear up towards things like AGI, Artificial General Intelligence, presumably an Artificial General Intelligence would be able to author something. But it remains to be seen.  

If you wanted to trace the development of an AI system by who wrote the code, how would it be possible since so many components are from open source software?  

Good point. This is actually how we started off this project of this paper“Okay, let’s trace it. Let’s figure out every person who is involved and figure out how much credit they should each get.” We quickly realized that this is an impossible task. It’s actually impossible to trace every single person who is involved in the production of an AI system. So you think, as you said, this is the people who wrote the code. But there’re software packages like NumPy or scikit-learn [both Python programming language libraries] that these things are built on, and those have hundreds or even thousands of contributors. You have big foundations of programming today. 

It’s also important to note that for AI in particular, in addition to just the code itself, other types of infrastructure are also involved such as the hardware. Lots of people who are involved in the production of the hardware and infrastructure. If you really try to figure out the development of the AI system from the people that write the code, the people who produce the infrastructure, the people who created the algorithm, people who built the training data, all these kinds of things, it would be impossible. I think to really have a comprehensive map of all the individuals who are actively involvedI would say the answer to that is a no. At least from the way we tackled it. 

Should the creators of the AI behind the $432,000 painting share in some of those proceeds? 

That’s an interesting question. Based on the findings of our results it’s this normative claim. It’s some moral question. It’s important here to say that we have findings from our results, but ultimately they are personal findings. These are what the public thinks about these things. I think it’s potentially dangerous to infer normative moral claims. If we were to ask people what we should do, we should certainly listen to them and take those crowd opinions and public opinion into account. But using that as the final like metric for morality, I think leads to some dangerous places.  

All this is to say that I don’t think that we have enough to say anything directly about this question. I will say though, that our participants thought that the creators of the AI painting should share some of those proceeds. Their folk intuition of how people thought about this. There was a lot of consensus that people thought that the creators, the Art Collective Obvious, should share some of their proceeds. I have a roundabout answer to your question, but I hope that helps.  

Should  Robbie Barrat, the programmer who created the Github repository that Obvious ostensibly pulled from to create the Edmond de Belamy painting, get some of the money paid to Obvious? If yes, how much? 

Again, it’s a big caveat that we can’t infer these normative claims. But I can tell you what our participants thought, which is that indeed Robbie Barrett should get some of the money paid to him. People thought that that seemed like a reasonable thing to do, given that he was the one who wrote all of the code. So in that way, there was this intuition that he has some part to play, an agentic part to play in the process of creating the artwork.  

[Ed Note: According to an account in The Seattle Times, Robbie Barrat was 17 years old when he developed code to manipulate artwork with AI. He uploaded it to the GitHub code sharing platform so others could learn from it. Barrat is now 19, and working in a Stanford University AI research lab. “It was a project I did in my free time when I was 17,” he stated. “It’s not high quality work.” Obvious, made up of three 25-year-old students, made the AI portrait using Barrat’s code and an existing algorithm. They were quoted on how they did the work in an account published in The Verge. Mario Klingemann, an AI artist based in Germany who the Obvious developers cited as an inspiration, was quoted as saying, “maybe this is just a practical joke among oligarchs. It’s horrible art from an aesthetic standpoint.”] 

On your website, you describe the Meet the Ganimals Project, the crowdsourcing platform for the discovery and curation of AI generated hybrid animals. What is that about?  

We live in the heyday of generators. Today, there are GANs [generative adversarial networks, a class of machine learning frameworks] that can generate crazy images. We discovered that you could actually use it to blend animals together. You can take animal pairs and interpolate between them to create these never before seen hybrid animals. The idea is that within the generator, there’s a vast possibility space of millions and millions of these different hybrid animals that no one has ever seen before. Some of them are so cute and so amazing and so cool that we were like “Oh my God, like this is so cool and so great.” The others were very lame. The idea is to use crowdsourcing to leverage large numbers of people and empower them as citizen scientists to help us explore this vast possibility space and find the most interesting and compelling Ganimals.  

This speaks to this broader idea that within generators, there are new kinds of GAN technologies, so many possible things that can be generated. Most of it is crap. The question remains, how do you find the best stuff in the best, those diamonds in the rough? We propose one crowdsourcing scheme that uses a dynamic Bandit algorithm to trade off exploration, exploitation to find those gems. I think that’s one way to think about how we can use crowdsourcing to augment the capacity for creativity for these generative models. 

Why do people share content on social media? 

That’s a very fundamental question. I feel like it really depends. The interesting thing about social media is that people use it for a lot of different things and have a lot of different use cases. Many people are sharing things on social media to please friends and followers, to send a signal to a group or to inform people of various things. Some people use it as a self-promotion tool or a promotion of like causes that they believe in. People use social media in many different ways that are equally valid. The goal for a future platform design is to figure out what are designs for social media where sharing works for everyone. And you don’t get these kinds of perverse incentives to share misinformation and polarizing content that might be on existing platforms.  

So you want to get to a sharing that works for everyone? 

Yes. That would be super cool I think. The current platforms are not doing a great job of that.   

Are there certain advantages of not using social media? Would people be better off not using it in some cases?  

This is a really interesting question. There have been some studies to get at this and at least the scientific answer is yes and no. They found that when you turn off your social media and you don’t use it, there’s good that comes about from it and there’s bad that comes about from it. Some good that comes about from it is people do report social media stressing them out and making them always looking at what their friends are doing and feeling inferior to all the cool things other people are doing. Without social media, people feel more engaged in their surroundings around them and feel the capacity to interact with their surroundings more.  

They also, however, feel more uninformed. We do find that a role of social media is to keep people informed. I see advantages and disadvantages of that. Ultimately, again that’s an individual different thing where social media isn’t great for certain people certain times, but it may be great otherwise. This is a really cool opportunity for platforms to design social media platforms that work for people in different contexts. Right now it’s like Twitter or Facebook is a very specific kind of experience. Either that works for you or it doesn’t, maybe you should be on or you shouldn’t. 

But in the same way that our social environments around us are highly configurable and highly adaptive, a future direction for social media platforms is to be equally adaptive and allow us to specify what kind of things we want out of social media. Right now, since it’s a free product, instead of getting what we want out of it and pursuing our own agendas for social agents, we’re being served ads and our data is being collected. The tables of power are not really in the favor of the user right now. So it would be interesting to explore how to turn those tables of power, to give people more agency over their social media experience which would help them get the advantages of being on social media and off when they don’t want to. 

It sounds like a startup idea. 

There you goIt could be a cool startup but at the same time do we need another platform? I feel there’s all this danger too. It’s like yet another app, yet another person selling their social media platform. We’ve seen a couple of these things that try to be a little bit more ethical or coherent. But I’m more interested in instead of building a new startup or building a new app, in trying to reform the existing ones, to empower humans and human decision-making to be better on the systems we have already.  

From the study you did with Prof. David Rand on misinformation on COVID-19 in the media, that was published by the Association for Psychological Science, you describe the term “inattention-based misinformation”. Can you elaborate on what that is?  

Inattention based misinformation is misinformation that is driven by people who are distracted when they share that misinformation. When you’re scrolling through Facebook or Twitter or some kind of social media platform, you’re seeing cats and dogs and your grandma posted something as yummy food, and… all these different emotional valences are all mixing. Then maybe you see a headline about COVID-19 and you’re like “Oh.. That sounds scary, maybe I’ll share that.” You’re not really thinking about accuracy. 

The idea is that kind of browsing experience takes you out of the mindset of accuracy and makes you distracted, because you’re thinking about other aspects of the sharing decision. The idea here is that misinformation proliferates because people are distracted online, and not thinking about the veracity of claims. They just share it because it sounds plausible and it’s got a clickbaity headline.  

What is an accuracy nudge? And can you provide an example of that?  

This is exactly the kind of solution to what we were talking about before. The idea here is to help move the spotlight of attention toward accuracy and get people to think about accuracy for a second and reflect on the veracity of claims. We find that actually helps boost people’s discernment. This suggests that people actually do have the ability to discern what is true and false online. But they don’t use that discernment, they don’t use that capacity in their sharing decisions because they’re distracted. The accuracy nudge can help people be less distracted and to attend to that existing, but latent motivation for sharing accurate content. We asked study participants to read an article and think about its accuracy, whether the claims line up, whether it makes sense. We found that act of thinking about accuracy spills over into the rest of that person’s sharing behavior. We found the idea of just doing that for one article at a time can actually change the way that they are sharing other types of content on social media.  

Is misinformation a cybersecurity issue? 

It’s a good question. I will admit I’m not a cybersecurity expert myself, so I think that’s to be determined. I do think it’s an important and critical issue for the internet as a whole. For the preservation of digital democracy, for the integrity of information online, misinformation poses an incredibly huge threat. We’ve gotten to a point in our society where we trust the internet so much, and we rely on it so much that it’s critical to preserve the integrity and value of information online. 

One of the reasons I’m so excited about this kind of work is because it shows a way that leverages the human capacity for understanding things and leverages our own ability to know what is true. I also feel that it’s not only a technological problem, but also a social problem. Trying to figure out how we as social beings can contribute to a collective kind of understanding of information online I think is very ambitious, but a very worthwhile goal.  

Is there anything you’d like to emphasize from any of your studies? 

When thinking about how people think about AI very differently, when people anthropomorphize AI, that actually changes how we think about these moral situations. A danger of AI is the extent to which we aren’t able to correctly allocate responsibility and credit to humans. The big call there is just for people to be discerning and to be aware of how their words have power. For journalists and technologists and everyone, every time we anthropomorphize AI, we play into this fear-mongering narrative that AI is this powerful force to be reckoned with that we can’t understand, that we can’t interpret and that we just have to be afraid of. 

I don’t think that that is confirmed by the science and certainly not by the narratives you see. I think in that way I hope that this paper is a call for people to be a little bit more rational in how they’re thinking about these things and not get swept up in these narratives of anthropomorphization.   

Learn more at Ziv Epstein’s personal website here and his Google Scholar page here.



Graph Convolutional Networks (GCN)

In this post, we’re gonna take a close look at one of the well-known graph neural networks named Graph Convolutional Network (GCN). First, we’ll get the intuition to see how it works, then we’ll go deeper into the maths behind it. Why Graphs? Many problems are graphs in true nature. In our world, we see many data are graphs, […]

The post Graph Convolutional Networks (GCN) appeared first on TOPBOTS.



graph convolutional networks

In this post, we’re gonna take a close look at one of the well-known graph neural networks named Graph Convolutional Network (GCN). First, we’ll get the intuition to see how it works, then we’ll go deeper into the maths behind it.

Why Graphs?

Many problems are graphs in true nature. In our world, we see many data are graphs, such as molecules, social networks, and paper citations networks.

Tasks on Graphs

  • Node classification: Predict a type of a given node
  • Link prediction: Predict whether two nodes are linked
  • Community detection: Identify densely linked clusters of nodes
  • Network similarity: How similar are two (sub)networks

Machine Learning Lifecycle

In the graph, we have node features (the data of nodes) and the structure of the graph (how nodes are connected).

For the former, we can easily get the data from each node. But when it comes to the structure, it is not trivial to extract useful information from it. For example, if 2 nodes are close to one another, should we treat them differently to other pairs? How about high and low degree nodes? In fact, each specific task can consume a lot of time and effort just for Feature Engineering, i.e., to distill the structure into our features.

graph convolutional network
Feature engineering on graphs. (Picture from [1])

It would be much better to somehow get both the node features and the structure as the input, and let the machine to figure out what information is useful by itself.

That’s why we need Graph Representation Learning.

graph convolutional network
We want the graph can learn the “feature engineering” by itself. (Picture from [1])

If this in-depth educational content on convolutional neural networks is useful for you, you can subscribe to our AI research mailing list to be alerted when we release new material. 

Graph Convolutional Networks (GCNs)

Paper: Semi-supervised Classification with Graph Convolutional Networks (2017) [3]

GCN is a type of convolutional neural network that can work directly on graphs and take advantage of their structural information.

it solves the problem of classifying nodes (such as documents) in a graph (such as a citation network), where labels are only available for a small subset of nodes (semi-supervised learning).

graph convolutional network
Example of Semi-supervised learning on Graphs. Some nodes dont have labels (unknown nodes).

Main Ideas

As the name “Convolutional” suggests, the idea was from Images and then brought to Graphs. However, when Images have a fixed structure, Graphs are much more complex.

graph convolutional network
Convolution idea from images to graphs. (Picture from [1])

The general idea of GCN: For each node, we get the feature information from all its neighbors and of course, the feature of itself. Assume we use the average() function. We will do the same for all the nodes. Finally, we feed these average values into a neural network.

In the following figure, we have a simple example with a citation network. Each node represents a research paper, while edges are the citations. We have a pre-process step here. Instead of using the raw papers as features, we convert the papers into vectors (by using NLP embedding, e.g., tf–idf).

Let’s consider the green node. First off, we get all the feature values of its neighbors, including itself, then take the average. The result will be passed through a neural network to return a resulting vector.

graph convolutional network
The main idea of GCN. Consider the green node. First, we take the average of all its neighbors, including itself. After that, the average value is passed through a neural network. Note that, in GCN, we simply use a fully connected layer. In this example, we get 2-dimension vectors as the output (2 nodes at the fully connected layer).

In practice, we can use more sophisticated aggregate functions rather than the average function. We can also stack more layers on top of each other to get a deeper GCN. The output of a layer will be treated as the input for the next layer.

graph convolutional network
Example of 2-layer GCN: The output of the first layer is the input of the second layer. Again, note that the neural network in GCN is simply a fully connected layer (Picture from [2])

Let’s take a closer look at the maths to see how it really works.

Intuition and the Maths behind

First, we need some notations

Let’s consider a graph G as below.

graph convolutional network
From the graph G, we have an adjacency matrix A and a Degree matrix D. We also have feature matrix X.

How can we get all the feature values from neighbors for each node? The solution lies in the multiplication of A and X.

Take a look at the first row of the adjacency matrix, we see that node A has a connection to E. The first row of the resulting matrix is the feature vector of E, which A connects to (Figure below). Similarly, the second row of the resulting matrix is the sum of feature vectors of D and E. By doing this, we can get the sum of all neighbors’ vectors.

graph convolutional network
Calculate the first row of the “sum vector matrix” AX
  • There are still some things that need to improve here.
  1. We miss the feature of the node itself. For example, the first row of the result matrix should contain features of node A too.
  2. Instead of sum() function, we need to take the average, or even better, the weighted average of neighbors’ feature vectors. Why don’t we use the sum() function? The reason is that when using the sum() function, high-degree nodes are likely to have huge v vectors, while low-degree nodes tend to get small aggregate vectors, which may later cause exploding or vanishing gradients (e.g., when using sigmoid). Besides, Neural networks seem to be sensitive to the scale of input data. Thus, we need to normalize these vectors to get rid of the potential issues.

In Problem (1), we can fix by adding an Identity matrix I to A to get a new adjacency matrix Ã.

Pick lambda = 1 (the feature of the node itself is just important as its neighbors), we have Ã = A + I. Note that we can treat lambda as a trainable parameter, but for now, just assign the lambda to 1, and even in the paper, lambda is just simply assigned to 1.

By adding a self-loop to each node, we have the new adjacency matrix

Problem (2)For matrix scaling, we usually multiply the matrix by a diagonal matrix. In this case, we want to take the average of the sum feature, or mathematically, to scale the sum vector matrix ÃX according to the node degrees. The gut feeling tells us that our diagonal matrix used to scale here is something related to the Degree matrix D̃ (Why , not D? Because we’re considering Degree matrix  of new adjacency matrix Ã, not A anymore).

The problem now becomes how we want to scale/normalize the sum vectors? In other words:

How we pass the information from neighbors to a specific node?

We would start with our old friend average. In this case, D̃ inverse (i.e., D̃^{-1}) comes into play. Basically, each element in D̃ inverse is the reciprocal of its corresponding term of the diagonal matrix D.

For example, node A has a degree of 2, so we multiple the sum vectors of node A by 1/2, while node E has a degree of 5, we should multiple the sum vector of E by 1/5, and so on.

Thus, by taking the multiplication of D̃ inverse and X, we can take the average of all neighbors’ feature vectors (including itself).

So far so good. But you may ask How about the weighted average()?. Intuitively, it should be better if we treat high and low degree nodes differently.

We’re just scaling by rows, but ignoring their corresponding columns (dash boxes)
Add a new scaler for columns.

The new scaler gives us the “weighted” average. What are we doing here is to put more weights on the nodes that have low-degree and reduce the impact of high-degree nodes. The idea of this weighted average is that we assume low-degree nodes would have bigger impacts on their neighbors, whereas high-degree nodes generate lower impacts as they scatter their influence at too many neighbors.

graph convolutional network
When aggregating feature at node B, we assign the biggest weight for node B itself (degree of 3), and the lowest weight for node E (degree of 5)
Because we normalize twice, we change “-1” to “-1/2”

For example, we have a multi-classification problem with 10 classes, F will be set to 10. After having the 10-dimension vectors at layer 2, we pass these vectors through a softmax function for the prediction.

The Loss function is simply calculated by the cross-entropy error over all labeled examples, where Y_{l} is the set of node indices that have labels.

The number of layers

The meaning of #layers

The number of layers is the farthest distance that node features can travel. For example, with 1 layer GCN, each node can only get the information from its neighbors. The gathering information process takes place independentlyat the same time for all the nodes.

When stacking another layer on top of the first one, we repeat the gathering info process, but this time, the neighbors already have information about their own neighbors (from the previous step). It makes the number of layers as the maximum number of hops that each node can travel. So, depends on how far we think a node should get information from the networks, we can config a proper number for #layers. But again, in the graph, normally we don’t want to go too far. With 6–7 hops, we almost get the entire graph which makes the aggregation less meaningful.

graph convolutional network
Example: Gathering info process with 2 layers of target node i

How many layers should we stack the GCN?

In the paper, the authors also conducted some experiments with shallow and deep GCNs. From the figure below, we see that the best results are obtained with a 2- or 3-layer model. Besides, with a deep GCN (more than 7 layers), it tends to get bad performances (dashed blue line). One solution is to use the residual connections between hidden layers (purple line).

graph convolutional network
Performance over #layers. Picture from the paper [3]

Take home notes

  • GCNs are used for semi-supervised learning on the graph.
  • GCNs use both node features and the structure for the training
  • The main idea of the GCN is to take the weighted average of all neighbors’ node features (including itself): Lower-degree nodes get larger weights. Then, we pass the resulting feature vectors through a neural network for training.
  • We can stack more layers to make GCNs deeper. Consider residual connections for deep GCNs. Normally, we go for 2 or 3-layer GCN.
  • Maths Note: When seeing a diagonal matrix, think of matrix scaling.
  • A demo for GCN with StellarGraph library here [5]. The library also provides many other algorithms for GNNs.

Note from the authors of the paper: The framework is currently limited to undirected graphs (weighted or unweighted). However, it is possible to handle both directed edges and edge features by representing the original directed graph as an undirected bipartite graph with additional nodes that represent edges in the original graph.

What’s next?

With GCNs, it seems we can make use of both the node features and the structure of the graph. However, what if the edges have different types? Should we treat each relationship differently? How to aggregate neighbors in this case? What are the advanced approaches recently?

In the next post of the graph topic, we will look into some more sophisticated methods.

graph convolutional network
How to deal with different relationships on the edges (brother, friend,….)?


[1] Excellent slides on Graph Representation Learning by Jure Leskovec (Stanford):

[2] Video Graph Convolutional Networks (GCNs) made simple:

[3] Paper Semi-supervised Classification with Graph Convolutional Networks (2017):

[4] GCN source code:

[5] Demo with StellarGraph library:

This article was originally published on Medium and re-published to TOPBOTS with permission from the author.

Enjoy this article? Sign up for more computer vision updates.

We’ll let you know when we release more technical education.

Continue Reading


Microsoft BOT Framework — Loops



Loops is one of the basic programming structure in any programming language. In this article, I would demonstrate Loops within Microsoft BOT framework.

To follow this article clearly, please have a quick read on the basics of the Microsoft BOT framework. I wrote a couple of articles sometime back and the links are below:

Let’s Get Started.

I would be using the example of a TaxiBot described in one of my previous article. The BOT asks some general questions and books a Taxi for the user. In this article, I would be providing an option to the user to choose there preferred cars for the ride. The flow will look like below:

Create a new Dialog Class for Loops

We would need 2 Dialog classes to be able to achieve this task:

  1. SuperTaxiBotDialog.cs: This would be the main dialog class. The waterfall will contains all the steps as defined in the previous article.
  2. ChooseCarDialog.cs: A new dialog class will be created which would allow the user to pick preferred cars. The loop will be defined in this class.

The water fall steps for both the classes could be visualized as:

The complete code base is present on the Github page.

Important Technical Aspects

  • Link between the Dialogs: In the constructor initialization of SuperTaxiBotDialog, add a dialog for ChooseCarDialog by adding the line:
AddDialog(new ChooseCarDialog());

1. 8 Proven Ways to Use Chatbots for Marketing (with Real Examples)

2. How to Use Texthero to Prepare a Text-based Dataset for Your NLP Project

3. 5 Top Tips For Human-Centred Chatbot Design

4. Chatbot Conference Online

  • Call ChooseCarDialog from SuperTaxiBotDialog: SuperTaxiBotDialog calls ChooseCarDialog from the step SetPreferredCars, hence the return statement of the step should be like:
await stepContext.BeginDialogAsync(nameof(ChooseCarDialog), null, cancellationToken);
  • Return the flow back from ChooseCarDialog to SuperTaxiBotDialog: Once the user has selected 2 cars, the flow has to be sent back to SuperTaxiBotDialog from the step LoopCarAsync. This should be achieved by ending the ChooseCarDialog in the step LoopCarAsync.
return await stepContext.EndDialogAsync(carsSelected, cancellationToken);

The complete code base is present on the Github page.

Once the project is executed using BOT Framework Emulator, the output would look like:

Hopefully, this article will help the readers in implementing a loop with Microsoft BOT framework. For questions: Hit me.




Continue Reading


The Bleeding Edge of Voice

This fall, a little known event is starting to make waves. As COVID dominates the headlines, an event called “Voice Launch” is pulling…



Tapaan Chauhan

This fall, a little known event is starting to make waves. As COVID dominates the headlines, an event called “Voice Launch” is pulling together an impressive roster of start-ups and voice tech companies intending to uncover the next big ideas and start-ups in voice.

While voice tech has been around for a while, as the accuracy of speech recognition improves, it moves into its prime. “As speech recognition moves from 85% to 95% accuracy, who will use a keyboard anymore?” says Voice Launch organizer Eric Sauve. “And that new, more natural way to interact with our devices will usher in a series of technological advances,” he added.

Voice technology is something that has been dreamt of and worked on for decades all over the world. Why? Well, the answer is very straightforward. Voice recognition allows consumers to multitask by merely speaking to their Google Home, Amazon Alexa, Siri, etc. Digital voice recording works by recording a voice sample of a person’s speech and quickly converting it into written texts using machine language and sophisticated algorithms. Voice input is just the more efficient form of computing, says Mary Meeker in her ‘Annual Internet Trends Report.’ As a matter of fact, according to ComScore, 50% of all searches will be done by voice by 2020, and 30% of searches will be done without even a screen, according to Gartner. As voice becomes a part of things we use every day like our cars, phones, etc. it will become the new “norm.”

The event includes a number of inspiration sessions meant to help start-ups and founders pick the best strategies. Companies presenting here include industry leaders like Google and Amazon and less known hyper-growth voice tech companies like Deepgram and Balto and VCs like OMERS Ventures and Techstars.

But the focus of the event is the voice tech start-ups themselves, and this year’s event has some interesting participants. Start-ups will pitch their ideas, and the audience will vote to select the winners. The event is a cross between a standard pitchfest and Britain’s Got Talent.


Continue Reading
AI3 hours ago

Graph Convolutional Networks (GCN)

AI4 hours ago

Microsoft BOT Framework — Loops

AI4 hours ago

The Bleeding Edge of Voice

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints

AI19 hours ago

Using Amazon SageMaker inference pipelines with multi-model endpoints