Methods for playing human-like chess

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

rreagan
Posts: 102
Joined: Sun Sep 09, 2007 6:32 am

Methods for playing human-like chess

Post by rreagan »

What are the current methods used to make engines play more like humans? Are those methods effective, or do they still need improvement? Which engine plays the most like a human?
Michael Sherwin
Posts: 3196
Joined: Fri May 26, 2006 3:00 am
Location: WY, USA
Full name: Michael Sherwin

Re: Methods for playing human-like chess

Post by Michael Sherwin »

This question is not easy to answer. Attempts have been made but I can not think of any engine that is specifically known for its human like play. Maybe someone else knows of one. There was one engine that tried to mimic human like blunders. For example it would not see certain backward bishop moves. I hope that someone else will respond to your question as I think that this is an interesting topic.
If you are on a sidewalk and the covid goes beep beep
Just step aside or you might have a bit of heat
Covid covid runs through the town all day
Can the people ever change their ways
Sherwin the covid's after you
Sherwin if it catches you you're through
rreagan
Posts: 102
Joined: Sun Sep 09, 2007 6:32 am

Re: Methods for playing human-like chess

Post by rreagan »

I think it's an interesting goal, and efforts to this goal would be more beneficial to the improving chess player than adding more Elo points to the top engines. I think we would first need a database of games from a range of non-masters. I recall someone had harvested every FICS game at one point. If it included time stamps, that would be an excellent start. I guess the main goal is deciding which moves the engine would either discard or be blind to, then matching Elo ratings to approximate number of errors made per game. Statistical analysis and Markov techniques would probably go a long way toward making something decent.
rreagan
Posts: 102
Joined: Sun Sep 09, 2007 6:32 am

Re: Methods for playing human-like chess

Post by rreagan »

Michael Sherwin
Posts: 3196
Joined: Fri May 26, 2006 3:00 am
Location: WY, USA
Full name: Michael Sherwin

Re: Methods for playing human-like chess

Post by Michael Sherwin »

If your interest is in helping human players to improve then the learning abilities in RomiChess should be of interest. They are very human like. The first one is reinforcement learning adapted from Pavlov's dog experiments. Humans tend to shy away from lines that they lose with and play lines they win with. This algorithm does the same for RomiChess. This is not the same as just selecting book lines from an existing book. RomiChess can create its own book from scratch or extend an existing book. The second is more immediate and I call it 'monkey see monkey do'. It just remembers winning lines and plays them back for as much as 180 half moves. Humans tend to just copy moves from games as well. Winboard is the only interface that I know that works with Romi's learning ability. The UCI protocol does not seem to even permit what RomiChess does.

In theory RomiChess can help a human improve their game. Just select an opening. If the human wins Romi will change the evaluations of the stored games and play differently. If you change sides Romi will play the humans winning line against them. If the human still wins then Romi will play that line when the colors are reversed. If Romi wins she will just keep playing the same line again and again until she is beaten.
If you are on a sidewalk and the covid goes beep beep
Just step aside or you might have a bit of heat
Covid covid runs through the town all day
Can the people ever change their ways
Sherwin the covid's after you
Sherwin if it catches you you're through
APassionForCriminalJustic
Posts: 417
Joined: Sat May 24, 2014 9:16 am

Re: Methods for playing human-like chess

Post by APassionForCriminalJustic »

rreagan wrote:What are the current methods used to make engines play more like humans? Are those methods effective, or do they still need improvement? Which engine plays the most like a human?
You should honestly ask Mark, the author of HIARCS, these questions. HIARCS probably is right up there to play the most like a human being (Komodo might be up there also; Stockfish certainty is not). But in reality, no engine will ever play like a human. Humans make outrageous blunders both strategically and tactically - and they simply just do not play like computers. Nevertheless, I think that this topic is quite interesting.

I think Gandalf was considered in its time of flourishment to be very human like.
Ferdy
Posts: 4833
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Methods for playing human-like chess

Post by Ferdy »

rreagan wrote:What are the current methods used to make engines play more like humans? Are those methods effective, or do they still need improvement? Which engine plays the most like a human?
Before I tried testing engines that have uci limit strength and uci elo options, to compare Deuterium's limit strength algo. I test the engine at uci elo 1200. Here are some results in swiss at TC 40 moves in 3 minutes repeating using arena, and an excellent ArenaSwiss program. The elo column is the rating change similar to FIDE calculation, Horizon is winboard engine that has setting for rating. Danasa is also winboard set at 1200. It was a plan to issue rating per period after the engines accumulate rating changes after the tournament they participated.
I download some fics games with elo around 1100 to 1300 I think, and check games played by these players.
Looking at the games of these engines, most impressive are games from MadChess and Ufim. Search MadChess here the author had published his algo.

Swiss 1200-1:

Code: Select all

Rank Engine                           ELO    1    2    3    4    5    6    7   Score      Tie  White   ELO
----------------------------------------------------------------------------------------------------------
  1: Horizon v4.4 elo1200            1200   3W+  2B-  9W+  5B+  4W+  6W+  7B+    6.0     30.0      4   +25
  2: BlackMamba v1.2c elo1200        1200  10W+  1W+  6B+  4B+  7B+  3B-  5W-    5.0     31.0      3   +15
  3: Amyan v1.72 elo1200             1200   1B- 10B+  5W- 11W+  8B+  2W+  6W+    5.0     28.0      4   +15
  4: Rybka v2.3.2a elo1200           1200  12W+  5B+  7B+  2W-  1B-  9B+ 11W+    5.0     26.0      3   +15
  5: Ufim v8.02 elo1200              1200   8W+  4W-  3B+  1W-  6B- 12B+  2B+    4.0     31.0      3    +5
  6: Tornado v4.4 elo1200            1200  14W+  9W+  2W-  8B+  5W+  1B-  3B-    4.0     27.0      4    +5
  7: Cheng4 v0.36c elo1200           1200  11W+ 13B+  4W-  9B+  2W- 10B+  1W-    4.0     26.0      4    +5
  8: Hiarcs v14 elo1200              1200   5B- 12W+ 11B+  6W-  3W- 14B+ 13W+    4.0     19.0      4    +5
  9: Houdini v4 elo1200              1200  13W+  6B-  1B-  7W- 14B+  4W- 12B+    3.0     23.0      3    -5
 10: MadChess v1.4 elo1200           1200   2B-  3W- 13B+ 12B- 11B+  7W- 14W+    3.0     20.0      3    -5
 11: Rodent v1.3 elo1200             1200   7B- 14B+  8W-  3B- 10W- 13W+  4B-    2.0     23.0      3   -15
 12: Deuterium v14.2.33.276 elo1200  1200   4B-  8B- 14W+ 10W+ 13B-  5W-  9W-    2.0     21.0      4   -15
 13: Arasan v17.1 elo1200            1200   9B-  7W- 10W- 14B+ 12W+ 11B-  8B-    2.0     18.0      3   -15
 14: Hamsters v0.7.1 elo1200         1200   6B- 11W- 12B- 13W-  9W-  8W- 10B-    0.0     20.0      4   -35
Swiss 1200-2:

Code: Select all

Rank Engine                           ELO    1    2    3    4    5    6    7   Score      Tie  White   ELO
----------------------------------------------------------------------------------------------------------
  1: Deuterium v14.3.34.21 elo1200   1200   2B=  9W+  5B+  3W+  4B+  6W+  7B+    6.5     29.5      3   +60
  2: Horizon v4.4 elo1200            1200   1W= 10B+  4B+  8W+  3W+  5B+  9B+    6.5     28.5      3   +60
  3: Amyan v1.72 elo1200             1200   7B+  6W+ 11W+  1B-  2B-  9B+  5W=    4.5     29.5      3   +15
  4: BlackMamba v1.2c elo1200        1200  11B= 12W+  2W-  6B+  1W-  8B+ 10W+    4.5     27.5      4   +15
  5: Cheng4 v0.36c elo1200           1200   9W=  8B+  1W- 11B+ 10W+  2W-  3B=    4.0     29.0      4   +10
  6: Ufim v8.02 elo1200              1200  10W+  3B-  7W=  4W- 13B+  1B- 14W+    3.5     23.5      4    -5
  7: Houdini v4 elo1200              1200   3W- 14W+  6B=  9B- 11B+ 12W+  1W-    3.5     22.5      4     0
  8: Tornado v4.4 elo1200            1200  14B+  5W- 12B+  2B-  9W=  4W- 13W+    3.5     22.5      4    +5
  9: Rybka v2.3.2a elo1200           1200   5B=  1B- 13W+  7W+  8B=  3W-  2W-    3.0     30.5      4    -5
 10: Hiarcs v14 elo1200              1200   6B-  2W- 14W+ 12W+  5B- 13B=  4B-    2.5     23.0      3   -20
 11: Rodent v1.3 elo1200             1200   4W= 13B+  3B-  5W-  7W- 14B+ 12W-    2.5     21.0      4   -25
 12: MadChess v1.4 elo1200           1200  13W=  4B-  8W- 10B- 14W+  7B- 11B+    2.5     18.5      3   -20
 13: Arasan v17.1 elo1200            1200  12B= 11W-  9B- 14B+  6W- 10W=  8B-    2.0     17.5      3   -30
 14: Deuterium v14.2.33.276 elo1200  1200   8W-  7B- 10B- 13W- 12B- 11W-  6B-    0.0     20.0      3   -60
Swiss 1200-3:

Code: Select all

Rank Engine                          ELO    1    2    3    4    5    6    7   Score      Tie  White   ELO
---------------------------------------------------------------------------------------------------------
  1: Horizon v4.4 elo1200           1200  16B+  8W+  4W+  3W+  5B+  2W+  7B+    7.0     25.0      4   +30
  2: Deuterium v14.3.34.21 elo1200  1200   7B- 13B+ 12W+  4W+  8W+  1B-  3B+    5.0     29.0      3   +15
  3: BlackMamba v1.2c elo1200       1200  14B+  7W+  6W+  1B-  9B+  4W+  2W-    5.0     29.0      4   +15
  4: Amyan v1.72 elo1200            1200  10B+ 11W+  1B-  2B-  6W+  3B-  8W+    4.0     31.0      3    +5
  5: Rybka v2.3.2a elo1200          1200   8B- 14W+ 11B+  6W+  1W-  7W= 10B=    4.0     26.5      4    +5
  6: Ufim v8.02 elo1200             1200  13W+ 12B+  3B-  5B-  4B-  9W+ 11W+    4.0     25.5      3    +5
  7: Tornado v4.4 elo1200           1200   2W+  3B-  9B- 11W+ 10W+  5B=  1W-    3.5     31.0      4     0
  8: Cheng4 v0.36c elo1200          1200   5W+  1B- 10B+  9W=  2B- 13W+  4B-    3.5     30.0      3     0
  9: SlowChess 2.960e elo1200       1200  12W- 15B+  7W+  8B=  3W-  6B- 14B+    3.5     23.0      3     0
 10: Houdini v4 elo1200             1200   4W- 16B+  8W- 14B+  7B- 15W+  5W=    3.5     19.0      4    -5
 11: MadChess v1.4 elo1200          1200  15W+  4B-  5W-  7B- 16W+ 12W+  6B-    3.0     20.5      4   -10
 12: Hiarcs v14 elo1200             1200   9B+  6W-  2B- 13W- 15W+ 11B- 16B+    3.0     20.5      3   -10
 13: DanaSahZ 0.4 elo1200           1200   6B-  2W- 16W+ 12B+ 14W+  8B- 15W-    3.0     19.5      4   -10
 14: Rodent v1.3 elo1200            1200   3W-  5B- 15B+ 10W- 13B- 16W+  9W-    2.0     21.0      4   -20
 15: Arasan v17.1 elo1200           1200  11B-  9W- 14W- 16W+ 12B- 10B- 13B+    2.0     18.0      3   -20
 16&#58; <Bye>                             1   1W- 10W- 13B- 15B- 11B- 14B- 12W-    0.0     23.5      3     0
Swiss 1200-4:

Code: Select all

Rank Engine                           ELO    1    2    3    4    5    6    7   Score      Tie  White   ELO
----------------------------------------------------------------------------------------------------------
  1&#58; Horizon v4.4 elo1200            1200  16W+  3B+  2B+  4B+  5W+ 12W+  7B+    7.0     25.5      3   +65
  2&#58; Hamsters v0.7.1 elo1200         1200  13B+  5B+  1W- 12W+  4W+  3B=  9B+    5.5     29.0      3   +40
  3&#58; Deuterium v14.3.34.21 elo1200   1200  14B+  1W- 13W=  9B+  8W+  2W= 12B+    5.0     26.5      4   +30
  4&#58; Cheng4 v0.36c elo1200           1200  11W+ 12B= 10B+  1W-  2B-  6W=  5W+    4.0     30.5      4     0
  5&#58; Amyan v1.72 elo1200             1200   7B+  2W- 11W+  6B+  1B- 13W+  4B-    4.0     30.0      3    +5
  6&#58; Ufim v8.02 elo1200              1200  10W=  8B+ 12B=  5W-  7B=  4B= 13W+    4.0     24.0      3    +5
  7&#58; Houdini v4 elo1200              1200   5W- 11B- 15B+ 16W+  6W=  8B+  1W-    3.5     24.0      4    +5
  8&#58; MadChess v1.4 elo1200           1200   9B=  6W- 14B+ 10W+  3B-  7W- 15B+    3.5     22.5      3     0
  9&#58; Arasan v17.1 elo1200            1200   8W= 10B- 16W+  3W- 14B+ 15B+  2W-    3.5     21.0      4    -5
 10&#58; Hiarcs v14 elo1200              1200   6B=  9W+  4W-  8B- 13W- 16B+ 14W+    3.5     19.5      4     0
 11&#58; Rybka v2.3.2a elo1200           1200   4B-  7W+  5B- 13W+ 12B- 14W= 16B+    3.5     19.0      3   +15
 12&#58; BlackMamba v1.2c elo1200        1200  15B+  4W=  6W=  2B- 11W+  1B-  3W-    3.0     30.5      4   -15
 13&#58; Tornado v4.4 elo1200            1200   2W- 15W+  3B= 11B- 10B+  5B-  6B-    2.5     27.0      2   -10
 14&#58; SlowChess 2.960e elo1200        1200   3W- 16B=  8W- 15W=  9W- 11B= 10B-    1.5     21.0      4   -40
 15&#58; Rodent v1.3 elo1200             1200  12W- 13B-  7W- 14B= 16B+  9W-  8W-    1.5     18.0      4   -40
 16&#58; Deuterium v14.2.33.276 elo1200  1200   1B- 14W=  9B-  7B- 15W- 10W- 11W-    0.5     24.0      4   -55
Swiss 1200-5:

Code: Select all

Rank Engine                           ELO    1    2    3    4    5    6    7    8    9   Score      Tie  White   ELO
--------------------------------------------------------------------------------------------------------------------
  1&#58; Horizon v4.4 elo1200            1200   2W+  4W+  5B+  7B+  3B+  6W+  9W+  8B+ 11W+    9.0     47.0      5   +45
  2&#58; Amyan v1.72 elo1200             1200   1B- 14B+  4W+  6W+  7W+  5B+  3B- 11W+  9B+    7.0     46.5      4   +25
  3&#58; BlackMamba v1.2c elo1200        1200  15W+  5B- 12W+ 11B+  1W-  7B=  2W+  4W+  6B=    6.0     45.0      5   +15
  4&#58; Deuterium v14.3.34.21 elo1200   1200  12W+  1B-  2B- 10W+  8W+  9B=  6W+  3B-  5B+    5.5     49.0      4   +10
  5&#58; Cheng4 v0.36c elo1200           1200  14W+  3W+  1W-  8B+  6B-  2W- 10B+  7B+  4W-    5.0     49.5      5    +5
  6&#58; Rybka v2.3.2a elo1200           1200  16W+  8W+  7W=  2B-  5W+  1B-  4B- 13B+  3W=    5.0     47.0      5    +5
  7&#58; Tornado v4.4 elo1200            1200  11W+  9W+  6B=  1W-  2B-  3W= 12B+  5W- 16B+    5.0     45.0      5    +5
  8&#58; Houdini v4 elo1200              1200  13W+  6B-  9W+  5W-  4B- 16B+ 14B+  1W- 15W+    5.0     37.5      5    +5
  9&#58; Ufim v8.02 elo1200              1200  10W+  7B-  8B- 15B+ 13W+  4W=  1B- 14B+  2W-    4.5     43.0      4     0
 10&#58; Hiarcs v14 elo1200              1200   9B- 12B- 16W+  4B- 14W+ 11W=  5W- 15B+ 13B+    4.5     30.5      4     0
 11&#58; Hamsters v0.7.1 elo1200         1200   7B- 15W+ 13B=  3W- 12W+ 10B= 16W+  2B-  1B-    4.0     40.5      4    -5
 12&#58; SlowChess 2.960e elo1200        1200   4B- 10W+  3B- 13W+ 11B- 15W+  7W- 16B- 14B-    3.0     33.5      4   -15
 13&#58; Arasan v17.1 elo1200            1200   8B- 16B+ 11W= 12B-  9B- 14W= 15B+  6W- 10W-    3.0     31.5      4   -15
 14&#58; Rodent v1.3 elo1200             1200   5B-  2W- 15B- 16W+ 10B- 13B=  8W-  9W- 12W+    2.5     35.0      5   -20
 15&#58; MadChess v1.4 elo1200           1200   3B- 11B- 14W+  9W- 16B= 12B- 13W- 10W-  8B-    1.5     34.0      4   -30
 16&#58; Deuterium v14.2.33.276 elo1200  1200   6B- 13W- 10B- 14B- 15W=  8W- 11B- 12W+  7W-    1.5     33.5      5   -30
[...] There are more.
User avatar
stegemma
Posts: 859
Joined: Mon Aug 10, 2009 10:05 pm
Location: Italy
Full name: Stefano Gemma

Re: Methods for playing human-like chess

Post by stegemma »

rreagan wrote:I think it's an interesting goal, and efforts to this goal would be more beneficial to the improving chess player than adding more Elo points to the top engines. I think we would first need a database of games from a range of non-masters. I recall someone had harvested every FICS game at one point. If it included time stamps, that would be an excellent start. I guess the main goal is deciding which moves the engine would either discard or be blind to, then matching Elo ratings to approximate number of errors made per game. Statistical analysis and Markov techniques would probably go a long way toward making something decent.
I think that a statistical approach is the wrong direction, to have an engine playing as a human. You can't achieve an human like style using statistic because human don't think in a true mathematical way... it would be something like simulating random numbers using a pseudo-random generator: the first are not predictable while the latter was. The only way, i think, would be to use neural networks or other AI algorithms... and still in those algorithms you must use true randomness. Of course some human play in a predictable way but strong grand-masters have personal style and play some unexpected move, time by time.

In the past, there were an italian program called "eta-beta" that were not so strength but were based in an human like style of tough. the software not just played moves but could say why she played that move. I say "she" because the programmer was a woman, that i've never had the fortune to meet (she's still alive but she doesn't work on that software anymore, as far as i know).
Henk
Posts: 7220
Joined: Mon May 27, 2013 10:31 am

Re: Methods for playing human-like chess

Post by Henk »

There is a good way to test if your engine plays human like. Just use it on chess.com and count how many games it takes before you get a warning or your account gets blocked. If your engine is able to detect mate in 10 or more users get suspicious.