data_analysis:statistics_and_machine_learning

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

data_analysis:statistics_and_machine_learning [2024/07/04 05:28] prgramdata_analysis:statistics_and_machine_learning [2025/07/07 14:12] (current) – external edit 127.0.0.1
Line 718: Line 718:
 [[data_analysis:transfer_learning]] [[data_analysis:transfer_learning]]
  
 +
 +=== self-supervised learning ===
 +자기지도학습
 +
 +**< 데이터의 일부를 보고 나머지를 예측하는 self-prediction> **
 +- GPT를 비롯한 웨이브넷, XLNet, PixcelCNN 등의 모델들은 자동회귀(autoregressive) 생성 모델들이다. 이전까지의 결과값을 기반으로 다음 값을 예측하는 방식을 사용한다
 +- GPT와 양대산맥을 이루고 있는 BERT 및 디노이징 오토인코더, 마스크드 오토인코더, simMIM 모델들은 마스크드 생성 모델들이다. 전체 데이터의 일부를 가리고, 나머지를 기반으로 가려진 영역을 유추하도록 학습된다
 +- 샘플에 변형(회전, 순서 섞기)을 주고 어떤 변형이 가해졌는지 원본을 찾게 하는 내재 관계 예측(innate relationship prediction) 모델
 +
 +**< 데이터 사이의 관계를 예측하는 contrastive learning > **
 +데이터 하나를 기준으로 해당 데이터를 변형한 것은 positive pair, 그 외의 데이터는 negative pair로 둔다. 그 뒤 기준이 되는 데이터와 positive pair는 가까워지고, negative pair와는 멀어지도록 학습시킨다. (Cosine similarity)
 ===AutoEncoder=== ===AutoEncoder===
 https://chioni.github.io/posts/ae/ https://chioni.github.io/posts/ae/
Line 728: Line 739:
     * 이미지 노이즈 제거image denoising, 이미지 압축기compressor     * 이미지 노이즈 제거image denoising, 이미지 압축기compressor
  
 +
 +====Vision====
 +
 +생성 모델은 식별 모델과 입출력이 반대. 식별 모델은 이미지를 보고 어떻게 분류를 할 건지 “자연어로 된 출력물”을 생성. 
 +반면, 생성 모델은 자연어로를 입력값으로 이미지를 생성. 그런데 이미지는 자연어보다 많은 숫자 데이터를 내포(임베딩 벡터). 
 +많은 숫자에서 적은 숫자를 뽑아내는 함수보다 적은 숫자에서 많은 숫자를 뽑아내는 함수가 더 어렵기에 생성 모델의 난이도가 더 높음. 
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
 +
 +(GAN) 이미지 생성의 속도가 빠르고, 고품질의 이미지를 생성할 수 있으나 학습 과정이 불안정하고 생성하는 이미지의 다양성이 저조
 +(VAE) 이미지 생성 속도가 빠르고, 다양한 이미지를 생성할 수 있으나 이미지의 품질이 다소 부족
 +[기술동향 2023 인공지능(2023), KISTEP]
 +
 +===GAN===
 +Generative Adversarial Networks, 생성적 적대 신경망
 +GAN은 이미지를 임의로 생성하는 생성기(Generator)와 생성된 이미지에 대한 진위를 구별하는 판별기(Discriminator)가 서로 경쟁적(적대적)으로 학습하는 이미지 생성 모델
 +- GAN 생성기의 입력은 대체로 무작위 변수가 기반으로써, 생성 이미지 역시 무작위일 가능성이 크다는 것을 의미
 +
 +이미지 합성과 스타일 전이는 위에서 언급한 잠재공간에서 표현된 숫자들을 조절해가면서 원하는 결과값을 얻는 과정으로 이해
 +하면 된다. 이를 N차원의 벡터값을 조작하는 잠재공간편집(latent space editing)이라고 부른다. 
 +GAN을 사용하여 특정 인물의 사진에 다른 헤어스타일을 입히려고 할 때, 먼저 모델의 헤어스타일이 포함된 잠재공간의 벡터를 찾아야 한다. 이를 위해 여러 이미지를 통해 머리 스타일 차원을 학습하고, 이 차원을 조작하여 원하는 스타일로 변경해, 해당 인물의 사진에 새로운 머리 스타일이 입혀진 이미지를 생성할 수 있다. 
 +
 +GAN이 가장 많이 기여한 것이 바로 이미지 합성 분야다. 두 개의 다른 이미지를 합성하여 새로운 이미지를 생성하는 데 GAN이 사용된다. 예를 들어, 풍경 사진에 구름을 추가하려고 한다면, GAN을 사용하여 풍경 이미지와 구름 이미지의 잠재공간의 벡터를 얻은 뒤, 두 벡터 값을 적절하게 결합해 새로운 벡터를 생성한다. 이후 새로운 벡터를 디코딩하면 원래 풍경 이미지에 구름이 있는 새로운 이미지를 얻는다. 
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
 +
 +[[data_analysis:GAN]]
 +===VAE===
 +AE는 데이터 압축과 특징 추출에 주로 사용되는 반면, VAE는 데이터의 확률적 모델링과 새로운 데이터 생성에 더 적합합니다.
 +
 +
 +===CLIP===
 +(Contrasitive Language-Image Pre-training) OPEN AI, 2021
 +텍스트와 이미지를 모두 동일한 포맷의 벡터로 인코딩한다.
 +그리고 비슷한 텍스트와 이미지간의 차이(loss)가 적어지도록 학습한다. 
 +이렇게 학습한 모델은 이후 텍스트-이미지쌍을 받았을 때 이들이 얼마나 유사한지를 loss 형태로 돌려줄 수 있게 되는 것이다.
 +
 +이떄 하나의 이미지와 복수개의 텍스트를 같이 주면 모델은 주어진 이미지를 가장 잘 묘사하는 텍스트가 무엇인지 알려줄 수 있다. 
 +반대로 하나의 텍스트와 여러 개의 이미지를 같이 줄 경우 주어진 텍스트에 해당하는 이미지가 무엇인지 골라낼 수 있다.
 +
 +텍스트든 이미지든 모델 입장에서 본다면 숫자의 집합일 뿐이므로 적절한 차원의 데이터를 출력하도록 구성한 후 텍스트와 이미지의 CLIP Loss가 최소화되도록 학습할 수 있다면 모델은 텍스트에 부합하는 이미지를 만들어낼수 있게 된다
 +
 +[이미지생성 AI의 진화(2022), nipa]
 +
 +===Diffusion_model===
 +[[data_analysis:Diffusion_model]]
 +
 +레이턴트디퓨전 모델(LDM: latent diffusion model)과 스테이블 디퓨전 모델(SDM: stable diffusion model)이 있다.
 +LDM과 SDM 모델은 약간의 구현 및 학습 방식의 차이일 뿐, 전반적인 개념은 매우 유사하다. 둘 다 ‘무작위 노이즈 이미지로부터 시작’하여 점진적으로 사실적인 최종 이미지로 변환하는 프로세스를 거친다. 
 +LDM과 SDM은 목적과 사용 사례에 따라 각기 장점이 있는 생성 모델이다. 따라서 LDM과 SDM 중 어느 것이 더 우수하다고 평가할 수는 없고, 사용 사례와 기술적 요구 사항에 따라 달라진다
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
 +
 +
 +
 +===스타일 전이===
 +[[https://lsoovmee-rhino.tistory.com/entry/VISION-%EB%B9%84%EC%A0%84-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%94%A5%EB%9F%AC%EB%8B%9D9-%EB%94%A5%EB%93%9C%EB%A6%BC%EA%B3%BC-%EC%8B%A0%EA%B2%BD-%EC%8A%A4%ED%83%80%EC%9D%BC-%EC%A0%84%EC%9D%B4|스타일전이]]
 +스타일 전이를 구현하는 방법은 일반적인 딥러닝 알고리즘의 구현 방법과 크게 다르지 않다. 먼저 우리가 원하는 목표를 가리키는 손실 함수를 정의하고, 이 손실 함수를 최적화함으로써 스타일 전이를 수행한다.
 +
 +스타일 전이에서의 목표는 원본 이미지의 콘텐츠를 보존하면서 참조 이미지의 화풍을 적용하는 것이다. 나머지는 콘텐츠와 화풍을 수학적으로 표현하고, 손실 함수를 정의하여 이를 최적화하는 것이다.
 +
 +손실 함수를 정의할 때 가장 중요한 점은 한쪽 이미지에는 콘텐츠를 보존하고 다른 이미지에는 화풍을 보존해야 하는 것이다.
 +
 +- 콘텐츠 손실: 콘텐츠 이미지와 통합 이미지 사이에 계산되는 손실. 이 손실을 최소화하면 원본 이미지의 콘텐츠가 통합 이미지에 더 많이 보존된다.
 +- 스타일 손실: 스타일 이미지와 통합 이미지 사이에 계산되는 손실. 이 손실을 최소화 하면 통합 이미지의 화풍이 스타일 이미지와 비슷해진다.
 +- 노이즈 손실: 총 분산 손실이라고도 한다. 통합 이미지에 포함된 노이즈 양을 측정한 값이다. 이 손실을 최소화 하면 이미지가 매끄러워진다.
 +
 +총 손실을 다음과 같이 계산된다.
 +
 +총_손실 = [스타일(스타일_이미지) - 스타일(통합_이미지)] + [콘텐츠(원본_이미지) - 콘텐츠(통합_이미지)]  + 총 분산 손실
 +
 +앞서 정의한 총 손실을 최소화하는 신경망 학습 방법을 이해해 보자.
  
 ====LLM==== ====LLM====
 +- RNN과 같이 기존 Seq2Seq 처리 기반 언어모델은 병렬이 아닌 순차 처리를 바탕으로 하므로 문장이 길어질수록 앞쪽 정보가 소실되는 장기의존성 문제가 존재
 +- 이를 극복하기 위해 장단기기억, 순환게이트 유닛 등 방안이 고안되었으나, 입력 시퀀스 길이가 길어지며 계산량 증가로 이어져 효율성이 낮아지는 한계가 존재
 +
 +- CNN은 합성곱필터라는 장치를 이용해서 시퀀스의 ‘지역적인 특성’을 짚어내는 모델이다. 다음 단어 맞히기 과정에서, 특정 단어를 기준으로 주변의 단어들을 보고 문맥을 결정하는 식이다. 그런데 이 합성곱 필터 크기를 넘어서는 문맥은 읽어내기가 어렵다. 그리고 RNN은 시퀀스 길이가 길어질수록 오래 전에 입력된 단어는 잊어버리거나, 마지막 단어의 의미에 너무 많은 비중을 쏟는 문제가 생긴
 +다는 단점이 있다
 +- 트랜스포머는 ‘문장 전체’ 안에서 단어들간의 ‘관계를 파악’하는 방식이다. 트랜스포머 모델은 기존의 CNN과 RNN을 사용하지 않고, “어텐션”이라는 메커니즘만을 사용한다. 
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
 +
 +- 트랜스포머의 핵심은 셀프어텐션(Self-attention)으로 문장에 나열된 단어간 연관성을 파악하는 역할을 수행하여 단어 중요도에 따른 ‘집중’여부를 판단
 [[data:analysis:Attention]] [[data:analysis:Attention]]
 +시퀀스라는 시계열적인 속성을 다수의 어텐션 헤드로 치환하여 장기 의존성을 해결하기 위한 방법론으로 활용하며, 용이한 병렬처리로 계산상의 효율을 확보
 +[기술동향 2023 인공지능(2023), KISTEP]
  
 BERT 학습방법 https://happy-obok.tistory.com/23 BERT 학습방법 https://happy-obok.tistory.com/23
Line 737: Line 828:
 [[data_analysis:GPT]] [[data_analysis:GPT]]
 - 디코더만 사용 - 디코더만 사용
 +- Large model이면 디코더만 있어도 decoder-only models can internally encode necessary context from prior tokens, reducing the need for an explicit encoder.
 +- Decoder-only models still leverage self-attention (though in a causal form), allowing them to capture dependencies efficiently.
 +- Many tasks that traditionally required encoder-decoder architectures can now be handled end-to-end with a sufficiently large decoder-only model.
 +- With enough training data, a decoder-only model learns latent representations of input text similar to an encoder but in a more flexible, autoregressive way.
 +
 +=== 유사도 Encoder ===
 +**Cross-Encoder:**
 +1. 구조: 두 문장을 동시에 하나의 인코더에 입력하여 처리합니다[1].
 +2. 성능: 일반적으로 더 높은 정확도를 보입니다. 문맥을 고려하므로 더 나은 검색 성능을 제공할 수 있습니다[2].
 +3. 처리 방식: 질의와 문서 쌍을 함께 입력으로 받아 처리합니다. 입력 형식은 "[CLS]질의[SEP]문서[SEP]"입니다[2].
 +4. 단점: 계산 비용이 높고 처리 시간이 많이 소요됩니다. 특히 큰 데이터셋에서는 사용하기 어렵습니다[2].
 +
 +**Bi-Encoder:**
 +1. 구조: 두 문장을 별도의 인코더로 독립적으로 처리합니다[1].
 +2. 성능: Cross-Encoder보다 정확도가 다소 낮을 수 있지만, 실제 사용에 더 유리합니다[3].
 +3. 처리 방식: 문서와 질의를 각각 별도로 인코딩한 후, 유사도를 측정하여 관련성이 높은 문서들을 찾습니다[2].
 +4. 장점: 문서들을 미리 임베딩하여 저장해놓을 수 있어, 실제 검색 시 질의에 대해서만 임베딩한 후 유사도 측정을 진행하면 되므로 소요 시간이 비교적 적습니다[2].
 +5. 확장성: 대규모 데이터셋에 적합하며, 쉽게 확장할 수 있습니다[4].
 +결론적으로, Cross-Encoder는 높은 정확도를 제공하지만 처리 속도와 확장성에 제한이 있습니다. Bi-Encoder는 빠른 처리 속도와 높은 확장성을 제공하지만 정확도가 다소 낮을 수 있습니다. 따라서 작업의 특성과 요구사항에 따라 적절한 모델을 선택해야 합니다[5].
 +
 +Citations:
 +[1] https://velog.io/%40xuio/Cross-Encoder%EC%99%80-Bi-Encoder-feat.-SentenceBERT
 +[2] https://nlp.jbnu.ac.kr/AIJBNU2023/slides/aijbnu2023_denseretrieval.pdf
 +[3] https://ydy8989.github.io/2021-08-11-polyencoder/
 +[4] https://acdongpgm.tistory.com/353
 +[5] https://velog.io/%40tobigs-nlp/Poly-Encoder
 +
 +실제 응용에서는 두 방식을 결합하여 사용하는 경우도 많습니다. 예를 들어, 대규모 검색에서는 Bi-Encoder를 사용하여 초기 검색을 수행한 후, 상위 결과에 대해 Cross-Encoder를 적용하여 더 정확한 순위를 매기는 방식을 사용할 수 있습니다. 이렇게 함으로써 Bi-Encoder의 효율성과 Cross-Encoder의 정확성을 모두 활용할 수 있습니다.
  
  
  • data_analysis/statistics_and_machine_learning.1720070898.txt.gz
  • Last modified: 2025/07/07 14:12
  • (external edit)