def METHOD_NAME(self, buffer, batch_size: int) -> Tuple[Tensor, Tensor]:
    with torch.no_grad():
        states, actions, rewards, undones, next_ss = buffer.sample(batch_size)  # next_ss: next states
        next_as, next_logprobs = self.act.get_action_logprob(next_ss)  # next actions
        next_qs = self.cri_target.get_q_min(next_ss, next_as)  # next q values
        alpha = self.alpha_log.exp().detach()
        q_labels = rewards + undones * self.gamma * (next_qs - next_logprobs * alpha)
    q1, q2 = self.cri.get_q1_q2(states, actions)
    obj_critic = self.criterion(q1, q_labels) + self.criterion(q2, q_labels)  # twin critics
    return obj_critic, states