<팀원>
소프트웨어학과 김평주
소프트웨어학과 박승연
소프트웨어학과 조성연
소프트웨어학과 한도연
<팀원별 활동내용>
김평주
이번 동계 기간 동안 TypeScript의 문법을 체계적으로 학습하고, 이를 실무적으로 적용하기 위해 실습 프로젝트를 진행하였다.
TypeScript의 기초 문법을 학습하며 변수와 데이터 타입, 인터페이스, 제네릭 등의 개념을 익히고, JavaScript와의 차이점을 비교하며 TypeScript의 장점을 이해하는 데
집중하였다. 이후, 학습한 내용을 바탕으로 TypeScript 기반의 애플리케이션을 개발하고, React와 TypeScript를 결합하여 UI 컴포넌트에 타입을 적용하는 실습을 진행하였다.
박승연
Kaggle에 공개되어 있는 가공된 MIT-BIH Arrhythmia Database 데이터셋들을 사용하여 정상, 비정상 바이오 마커들의 Classification task를 수행하였다.
아무런 데이터 가공이 진행되지 않은 PhysioNet의 RAW MIT-BIH Arrhythmia Database로부터 .csv와 심박 이상의 여부에 대한 annotation이 적혀 있는 .txt 파일을 읽어 와서
데이터의 형태를 검토한 후, 분류 작업에 용이한 방향으로 해당 데이터를 가공한 공개 데이터셋들을 추가 검토하였다.
원본 데이터의 샘플 수 불균형 문제를 해결하기 위해 PhysioNet으로부터 공개된 PTB Diagnosis Database가 사용하는 다섯 가지의 N, S, V, F, Q 클래스에 맞추어
MIT-BIH 데이터셋을 window 형태로 추출하여 사전 분류한 ECG Heartbeat Categorization Dataset을 인풋으로 채택하고,
추가적으로 GAN(Generatvie Adversarial Networks)와 같은 데이터 생성 기법을 활용하여 새롭게 합성해낸 부정맥 유형의 샘플을 추가한 mitbih-with-synthetic 데이터를
함께 인풋 데이터로 선택하여 두 종류의 가공 데이터를 합성한 fused database를 최종 인풋으로 선정하였다.
이와 같은 전처리 과정을 진행한 후에, CNN-LSTM-Attention 모델을 제안하여 순차적으로 ECG 심전도 데이터의 특징들을 추출하고 학습해 내도록 아키텍쳐를 구성하고
가설을 제시하였다. CNN(Convolutional Neural Network)는 ECG 신호의 한 주기 내에서의 지역적 패턴을 추출하여 feature map을 생성해 내는데에 용이하고,
LSTM(Long Short-Term Memory)는 주기별로 파형이 반복되는 ECG의 시계열 데이터로서의 특징으로부터 시간적 의존성을 학습하기에 용이하므로
신호들 간의 순차적 정보 처리에 사용할 목적으로 추가하였다. 마지막으로 Attention Mechanism을 통해 모델이 Abnormal Detection에 중요한 Biomarkers' 정보를 놓치지 않고
감지하도록 weight을 조절함으로써 분류 작업의 성능 향상을 기대하며 모델의 아키텍쳐를 완성하였다. 완성된 모델로부터 '모델의 아키텍쳐가 복잡해 질수록 Classification
결과가 더 좋은 성능을 나타낼 것이다'라는 연구 가설을 설정하여 성과 판단의 기준으로서 사용하였다.
*모델 구조를 조금 더 구체적으로 살펴본다면, 크게 입력 Layer, CNN Layer, LSTM Layer, Attention Layer, 출력 Layer로 구분할 수 있다.
CNN을 통해 Model의 Dimesnionality를 축소시켜 R-Peak와 같은 특징적 데이터를 찾아내면, Batch Normalization과 Swish activation function을 통해 많은 데이터 샘플들의
비선형적 특징을 학습해 낼 수 있다. 여기서는 전통적으로 사용되는 ReLU 대신에 조금 더 음수값의 데이터 정보를 유지하는 데에 용이한 곡선형의 Swish로 활성화 함수를
대체하여 사용하였다. 이를 위해 Swish activation function 코드를 별도의 Class로 선언하였다. 이후에 Pooling Layer를 통해 input data와 동일한 사이즈로 dimensionality를
복원시키고, LSTM이나 Attention Mechanism과 같은 Methods를 적용하여 추가적인 특징 추출을 진행하였다.
이후 세 가지 서로 다른 모델에 대해 별도의 클래스로 선언하여 각각 학습을 동일하게 진행하고, 동일한 Validation과 Test dataset을 사용하여 검증과 평가를 진행하였다.
조성연
String vs StringBuilder, RestTemplate vs WebClient vs HttpClient 의 비교를 하였습니다. 또한, 스프링 개발 환경에 있어 Java와 Kotlin을 비교하고,
팩토리 패턴에 대해 이해했습니다.
한도연
1~5주차 동안 JavaScript의 기본 개념과 주요 기능을 학습하였다. 먼저, <script> 태그를 이용한 JavaScript 코드 작성 및 외부 스크립트 파일 연결 방법을 익혔다.
이후, alert, prompt, confirm을 활용한 사용자와의 상호작용 방식을 학습하고, 모달 창이 실행 흐름에 미치는 영향을 이해하였다.
객체의 키와 값, 엔트리를 다루는 Object.keys, Object.values, Object.entries 메서드를 실습하며 객체 데이터를 효과적으로 처리하는 방법을 익혔다.
또한, JSON 데이터를 다루는 JSON.stringify와 JSON.parse를 학습하여 데이터를 직렬화하고 역직렬화하는 개념을 파악하였다.
마지막으로, setTimeout과 setInterval을 활용한 호출 스케줄링을 실습하며 비동기적인 실행 흐름을 제어하는 방법을 배웠다.
<팀원별 최종성과>
김평주
기존 JavaScript 코드를 TypeScript로 변환하는 연습을 진행하며 타입 추론과 유틸리티 타입을 활용하는 방법을 학습하였고,
ESLint 및 Prettier 설정을 통해 코드 품질을 관리하는 방법도 익혔다. 이를 통해 TypeScript의 기본 및 고급 문법을 익히고 실습을 통해 이해도를 높였으며,
React 프로젝트에서 TypeScript를 적용하여 보다 안전한 개발 환경을 구축할 수 있게 되었다. 또한, 타입 정의 및 제네릭을 활용하여 유지보구성이 높은 코드를 작성하는
능력을 갖추었으며, API 응답 타입을 명확하게 정의함으로써 예상치 못한 에러를 줄이는 데에도 도움이 되었다.
박승연
Classification task이므로 들어온 input segment (=window) of signal에 대해 N, S, V, F, Q 5가지의 정상/비정상 클래스 중 하나로 분류하도록 했을 때 올바르게 분류했는지
여부를 평가하였다. Evalutaion Metrics로는 보통의 Precision, Recall, F1 Score, Average Accuracy를 사용했다. 클래스별로 연구 가설과 다르게 CNN+LSTM 아키텍쳐가
더 높은 수치를 보이는 경우도 발생했지만, 결과적으로 Average Accuracy 측면에서 CNN 99.12%, CNN+LSTM 99.3%, CNN+LSTM+Attention 99.29%로 최종적으로
가설과 일치한 결과를 보였다.
조성연
String vs StringBuilder, RestTemplate vs WebClient vs HttpClient를 비교하며 Java에 대한 이해를 심화하였습니다.
또한, 스프링 개발 환경에서 Java와 Kotlin을 비교 분석하여 Kotlin + Spring 프로젝트를 시작하였고, 기존 프로젝트에 팩토리 패턴을 도입하여 역할이 분리되어 간결한 서비스
레이어를 만들 수 있었습니다.
한도연
JavaScript의 기초 문법과 핵심 기능을 익히고, 이를 바탕으로 간단한 코드 작성과 문제 해결을 수행할 수 있게 되었다.
학습 내용을 체계적으로 정리하고 Challenge 예제를 풀면서 개념을 보다 확실히 이해할 수 있었다.
또한, 다양한 메서드와 기능을 활용하여 JavaScript의 유용성을 실감할 수 있었으며, 실전 적용 가능성을 높이는 데 초점을 맞추었다.
<팀원별 향후계획>
김평주
앞으로는 TypeScript 기반의 풀스택 프로젝트를 진행하여 백엔드 API와 프론트엔드를 연결하는 실전 경험을 쌓고, 오픈소스 프로젝트를 분석할 계획이다.
또한, TypeScript와 Jest를 활용한 테스트 코드 작성 연습을 통해 코드의 안정성을 더욱 높이고자 한다.
이번 학습을 통해 TypeScript의 강력함을 실감하였으며, 앞으로도 다양한 실전 프로젝트를 진행하며 기술 역량을 지속적으로 강화해 나갈 예정이다.
박승연
모델의 성능을 얻어낸 것 이외에도 데이터와 모델 아키텍쳐의 측면에서도 배운 점이 많이 있었다. 우선 ECG 신호의 시간적 패턴을 CNN과 LSTM 만을 사용한 경우에도
상당히 잘 파악한다는 점이었다. 복잡한 패턴임에도 최종 모델과 치열하게 성능적 우위를 다투었던 점을 고려하면, univariate한 지금의 Task(UTS)를 넘어서
multivariate한 MTS tasks에도 다른 분야에서는 Baseline으로 치부되는 해당 모델 구조를 적용해 볼 가치가 있는 것으로 판단된다.
또한 해당 모델은 LLM이나 Transformer를 사용한 모델들과 다르게 매우 계산 속도가 빠르고 에너지 효율적이기 때문에 Wearable Device와 같은 분야에서 매우 유용하게
사용될 것으로 예상된다. 따라서 다음 단계로 학습을 확장한다면, "Wearable Dataset에 대해 가장 빠르게 classification ouput을 출력하는 모델 아키텍쳐는 무엇인지
비교 분석"하는 방향으로 도전해보고 싶다.
조성연
2024 동계 모각소를 통해 얻은 Java와 Spring에 대한 이해를 통해 2025-1학기에 진행 할 캡스톤 디자인에서 더 효율적인 백엔드 코드를 작성하여
팀원들과 소통하며 프로젝트를 이끌어나가는 개발자가 되고 싶습니다.
한도연
앞으로는 ES6+의 새로운 기능들을 학습하고, 이를 활용한 코드 최적화 및 효율적인 프로그래밍 방법을 익히고자 한다.
또한, 다양한 실전 프로젝트에 JavaScript를 적용하여 학습한 내용을 실습하고, 이를 통해 문제 해결 능력을 더욱 향상시킬 계획이다.
특히, 객체지향 프로그래밍과 비동기 처리 방식에 대한 이해도를 높이고, 더욱 복잡한 웹 애플리케이션 개발에도 도전해볼 예정이다.
<발표자료>