output based learning