Different players have different personalities and different playing styles. Mikhail Tal's style is different from Tigran Petrosian, just as Kasparov is different from Karpov. I am wondering if there is a chess engine that can play "like" a real famous chess player, both in the sense of playing strength and style. After all, playing against a "resurrected" Capablanca or Botvinnik will be an exciting idea.
This idea was very popular back in the days, some programmers used their best to create such engines, and they did achieve that (to a certain extend)
Some engines that you might want to check out are:
Szint has more of 100 personalities classified in 3 forms. Szint Training with personalities from 0 to 2600 of elo. Szint GM with personalities of world champions and grandmasters. Szint Settings with strong personalities done by other users.
This is a very interesting question. Yes I think are people that have tried to implement a "style" of a player, but most engines use a minimax algorithm also know as alpha-beta pruning. However, if you take a look at machine learning models, like Alpha Go, they first emulate/learn for a training set from the masters (called prior) and then train themselves by going against themselves. If we did this with a grandmaster, we could get an engine that is similar to that person, however the longer we train, the better it gets and the less it'll be like the grandmaster. There are other machine learning models that imitate the information feed beforehand, but I'm not an expert at it.
Chess.com semi recently added bots that play like different people in real life. There aren’t a ton of people but it does have a few.
A wider range of different players is supported by the engine used in the unfortunately discontinued Chessmaster games by Ubisoft. https://en.wikipedia.org/wiki/Chessmaster I’m not the biggest expert in famous players and their playstyle but on a basic level I have found their representation of the few players I have looked into and played against it seems like they did a pretty good job.
I think this type of thing can be achieved using chess engines to certain degree. I am afraid this is not possible with machine learning because of the nature of reinforced learning (Andrew's idea is creative; but I don't think it will work that way).
Some aspects of a player's style can be mimicked by forcing a usual chess engine to choose certain types of moves when there are multiple top moves to choose from (whose score differ only slightly). To give a rough idea, an engine mimicking Tal would go for more sacrifices, and one mimicking Petrosian would choose a move that grab more space. Anyway, there should be a threshold for opting the 'player style move' over the objective best move the engine could find (e.g., for most players, the engine should choose the best move unless the difference is less than 0.5). If the threshold for the difference is high (say, 2) and the engine favour attack, it would be an aggressive (not necessarily sound) chess engine.
Note: Making a solid criteria for 'engine favoring attack' is difficult, but necessary for a project of this type (esp. considering the fact that many nice attacks often involve 'silent' positional moves at some point in the sequence).