Charlie Sheen has taken to Twitter to apologise to Rihanna after calling her a "b***h" on live television.