본문 바로가기

AI 딥러닝48

[LLM] Ollama Web-UI 설치 Ollama 는 Llama2, Mistral, Gemma 등 대규모언어모델 (LLM)을 개인용 컴퓨터에 설치하고 쉽게 실행할 수 있게 해주는 오픈소스다. 공식 사이트는 다음과 같다. https://ollama.com/ Ollama를 이용하여 명령창에서 언어모델과 대화할 수도 있지만, chatGPT 처럼 웹브라우저에서 주고받는 대화가 더 익숙하다. Open WebUI (구 Ollama WebUI)는 Ollama를 위한 chatGPT 스타일의 웹 인터페이스로서 오픈소스 중에서 가장 인기가 많다고 한다. 윈도나 Mac 노트북에 Open WebUI 를 설치하는 방법은 아래 사이트나 여러 블로그 또는 유튜브에 자세히 나와 있으니 참고하기 바란다. GitHub - open-webui/open-webui: User-.. 2024. 2. 25.
[PtrNet] Pointer Net 구조 조합 최적화(combinatorial optimization)는 개별 개체의 조합으로 이루어진 목적함수의 최대값(또는 최소값)을 구하는 문제이다. 대표적인 예로서는 TSP(traveling salesman problem, 순회외판원문제), Job-shop Scheduling, Knapsack Problem(배낭문제) 등이 있다. 참고로 세가지 문제를 간략히 설명하면 다음과 같다. TSP 는 \(n\) 개의 서로 다른 도시의 좌표 \((x, y)\) 가 주어졌을 때, 각 도시를 한번씩 모두 방문하는 최단 경로를 찾는 문제다. Job-shop Scheduling은 수행해야 하는 일련의 작업과 이러한 작업을 수행하는 데 필요한 도구 세트가 주어졌을 때, 모든 작업이 완료될 때까지 걸리는 총 시간을 최소화하기 .. 2023. 9. 12.
[seq2seq] 어텐션이 포함된 seq2seq 모델 Sequence-to-sequence (seq2seq) 모델에서 인코더(encoder)는 입력 시퀀스를 고정된 길이를 갖는 컨텍스트 벡터로 압축하고, 디코더(decoder)는 이를 사용하여 전체 출력 시퀀스를 생성한다. 컨텍스트 벡터는 인코더의 맨 마지막 시퀀스 스텝(시간스텝)에서 생성되며, 인코더와 디코더를 연결하는 유일한 통로이자 인코더가 입력 시퀀스에서 취득한 모든 정보가 흐르는 길목이다. 기존 seq2seq 모델은 인코더와 디코더가 컨텍스트 벡터로만 연결되기 때문에 두가지 문제가 발생한다. 첫번째 문제는 고정된 길이를 갖는 1개의 컨텍스트 벡터만으로는 디코더로 전달하는 정보의 양이 제한되거나 소실된다는 점이다. 이를 병목(bottleneck) 현상이라고 하는데 입력 시퀀스가 매우 길어서 인코더가 .. 2023. 8. 23.
[seq2seq] 간단한 seq2seq 모델 구현 Sequence-to-sequence 또는 seq2seq 모델은 입력 시퀀스(sequence)를 출력 시퀀스로 변환하는 신경망 모델이다. seq2seq 모델은 한 도메인의 시퀀스를 다른 도메인의 시퀀스로 변환해야 하는 기계 번역, 대화 시스템, 질문 응답, 텍스트 요약, 이미지 또는 비디오 캡셔닝, 음성인식, 시계열 예측과 같은 분야에서 큰 성공을 거두었다. 기본적으로 seq2seq 모델은 인코더(encoder)와 디코더(decoder), 그리고 두 블록을 연결하는 컨텍스트 벡터(context vector)로 구성되어 있다. 인코더는 입력 시퀀스에 대한 정보를 고정된 길이를 갖는 컨텍스트 벡터로 압축한다. 컨텍스트 벡터는 디코더가 정확한 예측을 수행하는 데 도움이 되는 방식으로 구축된다. 디코더는 컨텍스.. 2023. 8. 17.
Hindsight Experience Replay (HER) 강화학습에서는 보상(reward)을 환경이 제공한다고 가정하지만 실제로는 강화학습 설계자가 시스템이 원하는 반응을 보이도록 보상함수를 설계해야 한다. 보상함수는 설계자가 원하는 것을 정확히 포착하도록 해야 하지만, 학습의 안정성과 효율성도 고려해서 신중하게 설계해야 한다. 강화학습을 실제 문제에 적용하는데 있어서 어려운 점 중의 하나는 바로 이 보상함수를 적절하게 설계하는 것이다. 특히 항공기나 미사일, 그리고 로봇과 같은 물리 시스템의 경우에는 도메인 지식이 없거나 또는 복잡하고 예측할 수 없는 환경에서는 적절한 보상을 설정하는 것 자체가 어려울 수도 있고, 또한 잘못된 지표를 최적화하게 되면 실제 의도한 목표에 대한 성능이 저하됨은 물론 예상하지 못한 원치 않는 동작을 유발할 수도 있다. 따라서 설계.. 2023. 6. 12.
[LSTM] LSTM-AE를 이용한 시퀀스 데이터 이상 탐지 오토인코더(AE, autoencoder)는 입력 데이터를 압축하고 의미 있는 표현으로 인코딩한 다음 복원시켜 복원된 데이터가 원본 데이터와 최대한 유사하도록 만든 신경망이다. AE는 일반적인 용도인 차원축소(dimension reduction) 뿐만 아니라 다양한 응용 분야를 갖고 있는데 그 중 하나가 이상 탐지(anomaly detection) 분야다. 비정상 탐지 또는 이상 탐지란 대부분의 입력 데이터와는 특성이 상이하여 정상이 아닌 것으로 의심을 불러일으킬 만한 어떤 사건 또는 측정값을 식별하는 행위이다. 예를 들면 국내에서 주로 사용되던 신용카드가 갑자기 해외에서 결제된 사건, 공장의 제조라인에서 불량품을 발견하는 일, 또는 센서 또는 시스템의 고장이라고 의심될 만한 측정 신호 검출 등을 들 수 .. 2023. 5. 31.
[LSTM] 주가 예측 LSTM(Long Short-Term Memory)이 시계열 예측(timeseries forecasting)에 특화되어 있다보니 주식 가격을 예측해보는 간단한 LSTM 예제 코드가 Github등에 많이 나와 있다. '주가예측'만큼 학습용 데이터를 손쉽게 얻을 수 있고 대중의 관심도 큰 분야는 없는 듯 하다. 최근 물리 시스템의 동역학 모델을 구축하는 데에 LSTM이 많이 도입되고 있고 개인적으로도 인공지능을 이용한 주식 거래 자동화에 관심이 있기 때문에 코딩 연습 겸 주가예측을 위한 간단한 LSTM 코드를 Tensorflow2로 구현해 보고자 한다. 참고로 특정 회사의 주가 데이터는 Yahoo finance 사이트의 Historical Data에 가면 다운로드 받을 수 있다. 예를 들어 특정 기간의 엔비.. 2023. 5. 19.
[VAE] beta-VAE 앞서 살펴본 바와 같이(https://pasus.tistory.com/263) VAE의 손실함수는 복원손실 항과 정규화 손실 항으로 구성된다. 식 (1)의 VAE 손실함수에서 첫번째 항인 복원손실은 복원(reconstruction)된 데이터가 원본 데이터와 얼마나 유사한지를 나타내는 오차다. 원본 데이터의 확률분포에 따라서 원본 데이터와 복원된 데이터 간의 교차 엔트로피나 L2 놈(norm)을 사용하여 복원손실을 계산할 수 있다. 두번째 항인 정규화(regularization) 손실은 고차원 입력 데이터를 저차원 잠재변수 공간(latent space)으로 인코딩할 때 잠재변수의 확률분포가 사전에(prior) 규정한 확률분포 \(p(\mathbf{z})\) 와 얼마나 유사한지를 계산하는 KL발산(Kullb.. 2023. 5. 11.
[VAE] 변이형 오토인코더(Variational Autoencoder) 생성모델(generative model)은 데이터를 생성해 낼 수 있는 모델을 말한다. 만약 데이터의 확률분포 \(-\) 데이터가 이산적일 경우는 확률질량함수(probability mass function), 연속적일 경우는 확률밀도함수(probability density function) \(-\) 를 알 수 있으면 샘플링을 통해서 본래 데이터와 같은 확률적 특성을 갖는 새로운 데이터를 임의로 생성할 수 있으므로, 생성모델의 목적은 데이터의 확률분포를 추정하는 것이라고 말할 수 있다. 예를 들면 데이터로서 얼굴 이미지 집합이 주어졌을 때, 그 이미지의 특성을 나타내는 확률밀도함수를 추정할 수 있다면, 새로운 얼굴 이미지를 임의로 생성할 수 있다는 말이다. 생성모델은 고차원(high dimension) .. 2023. 4. 30.
[LSTM] TF2에서 단방향 LSTM 모델 구현 - 2 tf.keras.layers.LSTM 의 속성 return_sequences를 True 로 설정하면 각 시퀀스별 은닉 상태(hidden state)를 모두 출력하게 된다. 다음 그림은 시퀀스 길이가 4 \((t-3, t-2, t-1, t)\), 은닉 상태변수의 차원이 \(\mathbf{h}_t \in \mathbb{R}^3\), 입력 변수의 차원이 \(\mathbf{x}_t \in \mathbb{R}^8\) 인 LSTM 모델을 나타낸 것이다. 이 모델의 특징은 각 시퀀스에서 은닉 상태가 모두 출력된다는 것이다. 이를 코드로 구현하면 다음과 같다. input = tf.keras.layers.Input(shape=(4, 8)) # (seq length, input dimension) lstm = tf.ker.. 2022. 7. 23.