> For the complete documentation index, see [llms.txt](https://lswkim322.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lswkim322.gitbook.io/til/til-ml/boostcamp/p-stage-mrc/8-reducing-training-bias.md).

# (8강) Reducing Training Bias

> * ODQA 할 떄 발생할 수 있는 bias에 대해 배워본다.
> * 어떤 상황에서 발생하는지와 해결하기 위한 노력들에 대해서
>
> **\[Reference & Further Reading]**
>
> * [Latent Retrieval for Weakly Supervised Open Domain Question Answering](https://arxiv.org/abs/1906.00300)
> * [Dense Passage Retrieval for Open-Domain Question Answering](https://arxiv.org/abs/2004.04906)

## 1. Definition of Bias

### 1.1. Bias의 종류

* **Bias in learning**
  * inductive bias: 학습할 때 과적합을 막거나 사전 지식을 주입하기 위해 특정 형태의 함수를 선호하는 것
    * 예를 들어 요약 대회에서 육하원칙으로 만들어진다고 생각하고 우리가 전처리하는 것
* **A Biased World**
  * historical bias: 현실 세계가 편향되어 있기 때문에 모델에 원치 않는 속성이 학습되는 것
  * co-occurrence bias: 성별과 직업 간 관계 등 표면적인 상관관계 때문에 원치 않는 속성이 학습되는 것
* **Bias in Data Generation**
  * specification bias: 입력과 출력을 정의한 방식 때문에 생기는 편향
  * sampling bias: 데이터를 샘플링한 방식 때문에 생기는 편향
  * annotator bias: 어노테이터의 특성 때문에 생기는 편향

#### Gender Bias

성별에 따라서 Bias가 생기는 것을 확인할 수 있다. 예를 들어 cooking 같은 경우 여성과 연관시켜서 오류가 발생하게 된다. 또 다른 예로는 "저 사람은 의사다." 라는 문장이 he is doctor 로 의사는 남자로 많이 학습되어 남자라고 가정하게 되는 bias가 있다.

#### Sampling Bias

설문 대상 설정으로 생긴 Bias로 인한 오류.

{% hint style="info" %}
Bias 가 있는 것이 나쁘다라기 보다 객관화를 하기에 문제가 있을 수 있다. 라고 생각하고 그를 해결하고자 고민할 것.
{% endhint %}

## 2. Bias in ODQA

### 2.1. Training bias in reader model

만약 reader 모델이 한정된 데이터셋에서만 학습하게 된다면 정답이 문서 내에 포함된 데이터 쌍만을 보게 되고, 이는 새로운 문서가 주어졌을 때 정답을 찾기 어려울 것이다.

예를 들어 소설, 수필, 비문학 등을 학습시킨 모델에 의학, 공학, 자연과학을 추론하게 한다면 당연히 정답을 맞출 수 없는 것과 같다.

### 2.2. How to mitigate Bias

* **Train negative examples**
  * 훈련할 때도 잘못된 예시를 보여줘서 retriever이 negative한 내용들은 먼 곳에 배치할 수 있음.
  * \=> **Negative sample도 완전히 다른 negative와 비슷한 negative에 대한 차이 고려 필요**함.
  * 🤷‍♂️ 대회를 하면서 항상 의구심이 들었던 부분인데 전처리를 통해 잘못 생성된 데이터를 제거하는 것이 과연 옳은 일인가 하는 고민이 든다... 이 내용을 보면 일부러 negative 데이터를 삽입하는 걸 볼 수 있다보니, 잘못된 데이터를 그냥 두는 것이 어찌보면 bias문제를 완화하는 조치가 되지 않을까?
  * 좋은 negative sample을 뽑기 위한 방법
    * Corpus내에서 랜덤하게 뽑기
    * 좀 더 헷갈리는 negative 샘플들 뽑기
      * \=> 높은 BM25 / TF-IDF 매칭 스코어를 가지지만, 답은 포함하지 않는 샘플
      * \=> 같은 문서에서 나온 다른 Passage / Question 선택하기
* **Add no answer bias**
  * 입력 시퀸스의 길이가 N일때, 시퀸스의 길이 외 1개의 토큰이 더 있다고 생각하기
  * \=> Training Model의 마지막 레이어 weight에 훈련가능한 bias를 하나 더 추가
  * \=> Softmax로 answer prediction 을 최종적으로 수행할 때, start end 확률이 해당 bias 위치에 있는 경우가 가장 확률이 높으면 이는 "대답 할 수 없다" 라고 취급

## 3. Annotation Bias from Datasets

### 3.1. Annotation Bias란?

ODQA 학습 시 기존의 MRC데이터 셋을 활용 => ODQA 세팅에는 적합하지 않은 bias가 데이터 제작(annotation) 단계에서 발생할 수 있음.

질문을 하는 사람이 답으르 알고 있는 상태로 질문하는 경우가 발생한다.

* SQuAD: Only 500 + wiki article => 학습 데이터의 분포자체가 이미 bias 되어있음
* 질문을 하는 사람이 passage를 보면서 문제를 내기 때문에 질문과 passage에 공통된 단어가 많아지게 된다.

### 3.2. Effect of annotation Bias

데이터 제작 단계에서 생긴 Bias로 인해 데이터 셋 별로 모델의 성능이 다르게 나오는 현상을 볼 수 있다.

![](https://3944465397-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MjcKlzGhHYe2bvmxTwS%2Fuploads%2FkAL8Rr6WovwG3m9reZCX%2Fimage.png?alt=media\&token=85843276-586e-4704-ae8d-365f96a48182)

* 합치면 올라가는 경우도 있으니 참고하자.

### 3.3. Dealing with annotation bias

데이터 셋 구성을 할 때, 실제로 생기는 것을 고려하여 데이터를 수집하는 것이 중요하다.

## 실습코드 Link

{% embed url="<https://drive.google.com/file/d/1qYHM8Qxn2fPHDb1DQ-0KstVhdtbl9zw2/view?usp=sharing>" %}
