Button should say what they do.
UXMovement has an article: Why Your Form Buttons Should Never Say ‘Submit’, which describes why providing generic terms...
gives users the impression that the form isn’t focused on a specific task. It also gives off the impression that your website isn’t user-friendly because you’re speaking in a technical way that most users aren’t familiar with.
When generic terms are used on buttons...
users could question what happens when they click the form button. This creates a level of uncertainty for users that designers can avoid by simply using a button label that describes the result of the user’s task.
You don't want to make your button less descriptive!
download bmml source – Wireframes created with Balsamiq Mockups
It doesn't have to be as lengthy, but don't hide it's purpose. "Don't save" is short and simple, but in the end there is nothing really wrong with your current label.
Having a way to back out of the action all together should be available (i.e., "Cancel") if, for example, the user accidentally clicked the button that caused this dialog to appear. Don't assume the "x" in the upper right corner is good enough.
"Yes" is also a problem, in which it doesn't tell the user what is going to happen. Label the button accordingly - for example: "Save".
@aslum also makes a very good point in the comments:
The green color + checkmark imply that it WAS saved, or something successful happened
Have an indication that the positive action (e.g., "Save") is the default action is good, but your current use of green and a checkmark do not favor the affordance of the button. Icons do not enhance usability.