分类: 🌏

  • 去中心化社交协议:Nostr、ActivityPub、Farcaster 和 Lens Protocol 的比较

    本文将对四种主流的去中心化社交协议:Nostr、ActivityPub、Farcaster 和 Lens Protocol 进行比较分析,探讨它们的核心理念、主要功能、优缺点以及目标用户群体。

    评估去中心化社交协议的关键因素:

    • 账户创建和通信:用户如何在不依赖中心化服务器的情况下创建账户并进行互动?
    • 数据存储和社交图谱:用户数据(包括社交关系和内容)存储在哪里,如何访问?
    • 内容审核:协议如何解决垃圾邮件和有害内容等问题,同时维护言论自由原则?
    • 激励机制:如何激励服务提供商维护网络并确保其长期可持续性?

    1. Nostr:

    • 核心理念:Nostr 构建在去中心化的中继网络之上,优先考虑抗审查性和用户对数据的控制权。
    • 主要功能:
      • 用户创建公私钥对以进行身份验证。
      • 消息广播到连接的中继,并传递给连接到相同中继的用户。
      • 中继没有义务存储数据,但有些提供付费存储选项。
      • 内容审核由各个中继自行决定。
    • 优点:高度抗审查、设计简洁、方便使用比特币闪电网络支付。
    • 缺点:数据持久性可能是一个问题,由于缺乏集中审核,垃圾邮件和有害内容的风险增加。
    • 目标用户:比特币爱好者、隐私倡导者、寻求抗审查的用户。

    2. ActivityPub:

    • 核心理念:一种联合社交协议,类似于电子邮件,可实现互操作的社交网络。
    • 主要功能:
      • 用户在特定的实例(服务器)上创建帐户。
      • 实例之间相互通信以传递消息和共享数据。
      • 用户可以导出数据并迁移到其他实例。
      • 内容审核由各个实例自行处理。
    • 优点:用户体验熟悉,成熟的应用程序(如 Mastodon),允许具有不同审核政策的多元化社区。
    • 缺点:依赖实例管理员,实例关闭或审查的风险,缺乏针对实例运营商的明确激励机制。
    • 目标用户:寻求中心化社交媒体平台替代方案的用户,具有特定兴趣或价值观的社区。

    3. Farcaster:

    • 核心理念:旨在创建一个具有强大的数据存储层和用户友好应用程序的去中心化社交网络。
    • 主要功能:
      • 利用以太坊进行用户注册和身份验证。
      • 采用中心网络进行实时数据同步。
      • 计划引入订阅模式以创收。
      • 内容审核方法仍在开发中。
    • 优点:高度重视数据的持久性和可用性,通过订阅实现可持续资金的潜力。
    • 缺点:架构复杂,如果中心数量有限,可能会出现中心化问题。
    • 目标用户:寻求 Twitter 的去中心化替代方案的用户,注重数据所有权和可靠性。

    4. Lens Protocol:

    • 核心理念:利用区块链技术赋予用户对其社交数据的所有权和控制权。
    • 主要功能:
      • 建立在 Polygon 区块链之上,使用户能够以 NFT 的形式拥有他们的社交图谱和内容。
      • 允许创建具有不同功能和盈利模式的去中心化社交应用程序。
      • 强调应用程序之间的可组合性和互操作性。
      • 内容审核可以在应用程序级别实施。
    • 优点:真正拥有社交数据,创新的社交应用程序和盈利策略的潜力。
    • 缺点:与区块链技术相关的可扩展性挑战,潜在的高昂 Gas 费用。
    • 目标用户:精通加密的用户,寻求将其内容货币化的创作者,构建去中心化社交应用程序的开发人员。

    结论:

    选择哪种去中心化社交协议取决于个人需求和优先级。Nostr 提供简单性和抗审查性,ActivityPub 提供熟悉的联合模型,Farcaster 专注于数据持久性和用户体验,Lens Protocol 则通过基于区块链的所有权赋予用户权力。随着该领域的不断发展,这些协议可能会继续创新,并吸引寻求中心化社交媒体平台替代方案的不同社区。

  • Analysis of Decentralized Social Protocols: Nostr, ActivityPub, Farcaster, and Lens Protocol

    This article provides a comparative analysis of four prominent decentralized social protocols: Nostr, ActivityPub, Farcaster, and Lens Protocol. It delves into their design philosophies, underlying mechanisms, target audiences, and potential competitive advantages.

    Key Considerations for Evaluating Decentralized Social Protocols:

    • Account Creation and Communication: How do users establish identities and interact within the decentralized framework? This aspect examines the mechanisms for account registration, content posting, and private messaging without relying on centralized servers.
    • Data Storage and Social Graph: Where is user data, including social connections and content, stored? This is crucial for understanding data ownership, portability, and censorship resistance.
    • Content Moderation: How does the protocol address content moderation challenges, such as spam and harmful content, while upholding free speech principles?
    • Incentive Mechanisms: What incentives are in place to encourage participation from service providers and users, ensuring the protocol’s sustainability and growth?

    1. Nostr:

    • Focus: Censorship resistance and simplicity.
    • Mechanism:
      • Relies on a decentralized network of relays for message propagation.
      • Users connect to multiple relays, and messages are delivered to those shared between users.
      • Public-key cryptography ensures message authenticity and optional end-to-end encryption for private messages.
    • Data Storage: Distributed across connected relays, with optional data export and self-custody.
    • Content Moderation: Relay-specific, with most relays adopting a minimal moderation approach.
    • Incentives:
      • Low operational costs for basic relays.
      • Potential for premium services like extended data storage and content moderation as paid subscriptions.
    • Ecosystem:
      • Growing rapidly, fueled by the popularity of the Damus app.
      • Attracting a significant user base of Bitcoin enthusiasts.
      • Still in early stages, with many applications in the prototype phase.

    2. ActivityPub:

    • Focus: Decentralized alternative to traditional social media platforms.
    • Mechanism:
      • Employs a federated network of instances (servers).
      • Users register on specific instances, which communicate with each other to deliver messages.
    • Data Storage: Stored on the user’s chosen instance, with the option for export and migration.
    • Content Moderation: Instance-specific, allowing for diverse moderation policies across the network.
    • Incentives:
      • Primarily driven by community contributions and volunteer efforts.
      • Sustainability concerns due to the lack of robust monetization models for instance operators.
    • Ecosystem:
      • Mature ecosystem with established applications like Mastodon.
      • Attracts users seeking refuge from centralized censorship and control.

    3. Farcaster:

    • Focus: Building a decentralized social network with a user-friendly experience.
    • Mechanism:
      • Three-layer architecture: Ethereum blockchain for user registration, a network of hubs for data synchronization, and client applications.
      • Hubs maintain a real-time synchronized copy of the network’s data.
    • Data Storage: User IDs on the Ethereum blockchain, content and social graph on the network of hubs.
    • Content Moderation:
      • Currently unclear, potentially delegated to individual applications.
      • Early focus on curated growth through an invitation-only system.
    • Incentives:
      • Short-term reliance on low costs and community enthusiasm.
      • Long-term plans for protocol revenue sharing with hub operators.
    • Ecosystem:
      • Early stage but well-funded.
      • Aiming to balance decentralization with a smooth user experience.

    4. Lens Protocol:

    • Focus: Decentralized social graph that empowers creators and communities.
    • Mechanism:
      • Built on the Polygon blockchain, leveraging its scalability and lower transaction fees.
      • Users own their social graph data as NFTs (non-fungible tokens).
    • Data Storage:
      • Social graph data stored on the Polygon blockchain.
      • Content can be stored on-chain or off-chain using IPFS (InterPlanetary File System).
    • Content Moderation:
      • Can be implemented at the application level or through community governance mechanisms.
    • Incentives:
      • Native token ($LENS) for governance and potential monetization opportunities.
      • Enables new forms of creator monetization through NFTs and social tokens.
    • Ecosystem:
      • Rapidly growing ecosystem of applications and communities.
      • Strong focus on creator empowerment and ownership.

    Conclusion:

    The decentralized social media landscape is evolving rapidly, with each protocol offering a unique approach to address the limitations of centralized platforms. The success of these protocols will depend on their ability to attract users, foster vibrant ecosystems, and navigate the challenges of content moderation and sustainability.

  • 深入探索 Deep Java Library (DJL)

    在深度学习领域,Python 一直占据着主导地位,拥有 TensorFlow 和 PyTorch 等强大的框架。然而,Java 作为企业级应用的支柱语言,也渴望在深度学习浪潮中占据一席之地。Deep Java Library (DJL) 应运而生,它致力于弥合 Java 生态系统与深度学习之间的鸿沟。

    DJL:用 Java 语音构建深度学习应用的桥梁

    DJL 是一个开源的深度学习框架,专为 Java 开发者设计。它提供了一套直观且易于使用的 API,用于构建、训练和部署深度学习模型。

    DJL 的核心优势:

    • 专为 Java 打造: DJL 允许开发者使用熟悉的 Java 语法和工具构建深度学习应用,无需切换语言或学习复杂的 Python 库。
    • 引擎无关性: DJL 支持多种深度学习引擎,包括 TensorFlow、PyTorch、MXNet 和 OnnxRuntime。开发者可以自由选择最适合其需求的引擎,并轻松地在不同引擎之间切换。
    • 模型库: DJL 提供了丰富的预训练模型库,涵盖图像分类、对象检测、自然语言处理等多个领域。开发者可以直接使用这些模型进行推理或微调,快速构建原型或部署应用。
    • 高性能: DJL 针对性能进行了优化,可以充分利用多核 CPU 和 GPU 进行训练和推理。

    DJL 的应用场景

    DJL 适用于各种深度学习应用场景,包括:

    • 图像识别: 使用预训练模型或自定义模型进行图像分类、对象检测等任务。
    • 自然语言处理: 进行文本分类、情感分析、机器翻译等任务。
    • 预测分析: 构建时间序列模型进行预测和异常检测。
    • Java 应用集成: 将深度学习功能集成到现有的 Java 应用中,例如推荐系统、欺诈检测等。

    DJL 实例:图像分类

    以下代码示例展示了如何使用 DJL 和预训练的 ResNet-50 模型进行图像分类:

    // 加载预训练的 ResNet-50 模型
    Criteria<Image, Classifications> criteria = Criteria.builder()
            .setTypes(Image.class, Classifications.class)
            .optModelUrls("https://mlrepo.djl.ai/modelpaths/resnet50_v1/resnet50_v1_tf_cpu.zip")
            .build();
    try (ZooModel<Image, Classifications> model = ModelZoo.loadModel(criteria);
         Predictor<Image, Classifications> predictor = model.newPredictor()) {
    
        // 加载待分类的图像
        Image img = ImageFactory.getInstance().fromUrl("https://djl.ai/images/kitten.jpg");
    
        // 执行推理
        Classifications classifications = predictor.predict(img);
    
        // 打印分类结果
        System.out.println(classifications);
    }

    总结:

    DJL 为 Java 开发者打开了深度学习的大门,让他们能够利用现有的技能和工具构建强大的 AI 应用。随着 DJL 的不断发展和完善,我们可以预见 Java 在深度学习领域将会扮演越来越重要的角色。

  • KerasCV 和 KerasNLP:赋予视觉和语言处理超能力

    近年来,深度学习在计算机视觉(CV)和自然语言处理(NLP)领域取得了显著的进展。然而,构建和训练最先进的模型需要大量的计算资源和专业知识,这给许多研究人员和实践者带来了挑战。为了解决这些问题,谷歌的 Keras 团队推出了 KerasCV 和 KerasNLP,这是 Keras API 的扩展,旨在简化 CV 和 NLP 工作流程。

    模块化设计:构建复杂模型的基石

    KerasCV 和 KerasNLP 采用模块化、分层的设计方法,为用户提供了三种主要抽象级别:

    1. 基础组件: 这些组件是构建和训练预处理管道、模型和评估逻辑的可组合模块。例如,KerasCV 提供了丰富的预处理层,可以轻松构建数据增强管道,提高模型的鲁棒性和泛化能力。
    # 应用灰度预处理到输入
    (images, labels), _ = keras.datasets.cifar10.load_data()
    to_grayscale = keras_cv.layers.preprocessing.Grayscale()
    augmented_images = to_grayscale(images)
    1. 预训练主干: 用户可以使用预训练的模型主干进行微调,例如 ResNet、BERT 和 GPT2 等流行架构。这些主干模型通常在大型数据集上进行训练,可以为各种下游任务提供良好的起点。
    2. 任务模型: 这些模型针对特定任务进行了预先配置,例如图像分类、对象检测、文本生成和问答。任务模型结合了较低 API 级别的预处理和建模模块,创建了一个统一的训练和推理接口,可以直接对原始文本或图像输入进行操作。

    预设 API:快速构建最先进模型

    预设 API 提供了一种创建最先进的 CV 和 NLP 模型的便捷方法。预设是已经在特定数据集上训练过的预配置模型,可用于特定任务。

    例如,要使用预设 API 创建 RetinaNet 模型,只需导入 keras_cv.models 模块,然后在 RetinaNet 类上调用 from_preset() 方法:

    # 从预设加载架构和权重
    model = keras_cv.models.RetinaNet.from_preset(
        "resnet50_imagenet",
    )

    性能优势:多后端支持和 XLA 编译

    KerasCV 和 KerasNLP 支持 JAX、TensorFlow 和 PyTorch 等多个后端,允许用户选择最适合其需求的框架。此外,它们还支持 XLA 编译,这可以显著提高模型的训练和推理速度。

    Kaggle 模型:开放获取预训练模型

    所有 KerasCV 和 KerasNLP 的预训练模型都发布在 Kaggle 模型平台上,并且可以在没有互联网连接的情况下使用。这为研究人员和实践者提供了便捷地访问和使用最先进模型的机会。

    未来展望:多模态和模型服务

    Keras 团队计划在未来扩展 KerasCV 和 KerasNLP 的功能,包括支持更广泛的多模态模型和优化与后端特定大型模型服务解决方案的集成。

    结论:赋能 CV 和 NLP 创新

    KerasCV 和 KerasNLP 为快速原型设计新模型提供了模块化组件,并为许多计算机视觉和自然语言处理工作流提供了标准的预训练主干和任务模型。它们可以被 JAX、TensorFlow 或 PyTorch 的用户利用。得益于后端可选性和 XLA 编译,KerasCV 和 KerasNLP 提供了最先进的训练和推理性能。

    参考文献

    • Chollet, F. et al. (2015). Keras. https://keras.io/
    • Watson, M. et al. (2024). KerasNLP: Natural Language Processing with Keras.
    • Wood, L. et al. (2024). KerasCV: Computer Vision with Keras.
    • Abadi, M. et al. (2015). TensorFlow: Large-Scale Machine Learning on Heterogeneous Systems.
    • Bradbury, J. et al. (2018). JAX: Autograd and XLA for High-Performance Machine Learning Research.
    • Paszke, A. et al. (2019). PyTorch: An Imperative Style, High-Performance Deep Learning Library.
    • Sabne, A. (2020). XLA: The TensorFlow Compiler.
    • Devlin, J. et al. (2019). BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding.
    • Jiang, Q. et al. (2023). Mistral 7B.
    • Kirillov, A. et al. (2023). Segment Anything.
    • Team, G. (2024). Gemma.
    • Wolf, T. et al. (2020). Transformers: State-of-the-Art Natural Language Processing.
  • KerasNLP: Your Gateway to State-of-the-Art NLP with TensorFlow

    KerasNLP is a powerful library that brings the simplicity and ease-of-use of Keras to the world of Natural Language Processing (NLP). Built on top of TensorFlow, it provides a comprehensive suite of tools for building, training, and deploying state-of-the-art NLP models.

    Key Features:

    • Pre-trained Models: Access a wide range of pre-trained models for tasks like text classification, question answering, summarization, and more. These models are ready to use off-the-shelf or fine-tune on your own data.
    • Modular Architecture: KerasNLP embraces modularity, allowing you to easily combine and customize different components like tokenizers, embeddings, encoders, and decoders to build your own custom NLP pipelines.
    • User-Friendly API: Leverage the intuitive Keras API for defining, training, and evaluating your models. The familiar syntax makes it easy for both beginners and experts to dive into NLP.
    • Seamless TensorFlow Integration: Built directly on TensorFlow, KerasNLP benefits from TensorFlow’s ecosystem, including distributed training, model optimization, and deployment options.

    What can you do with KerasNLP?

    • Text Classification: Categorize text into predefined classes (e.g., sentiment analysis, spam detection).
    • Sequence Tagging: Assign labels to words in a sequence (e.g., named entity recognition, part-of-speech tagging).
    • Question Answering: Develop models that can answer questions based on given context.
    • Text Summarization: Generate concise summaries of longer texts.
    • Machine Translation: Translate text from one language to another.
    • Text Generation: Create new text, like poems, code, scripts, musical pieces, email, letters, etc.

    Getting Started with KerasNLP:

    1. Installation: Install KerasNLP using pip:
       pip install keras-nlp
    1. Load a Pre-trained Model:
       import keras_nlp
       # Load a BERT model for text classification
       classifier = keras_nlp.models.BertClassifier.from_preset("bert_base_en_uncased")
    1. Preprocess Text:
       # Tokenize and encode the input text
       inputs = keras_nlp.preprocess.bert_preprocess(
           "This is an example sentence.", classifier.tokenizer
       )
    1. Make Predictions:
       # Get the predicted class probabilities
       probs = classifier(inputs)

    Advantages of KerasNLP:

    • Ease of Use: Keras’s intuitive API makes building and training NLP models straightforward.
    • Flexibility: The modular design allows for customization and experimentation with different architectures.
    • Performance: Built on TensorFlow, KerasNLP benefits from optimized performance and scalability.
    • Strong Community Support: Backed by a vibrant community and active development.

    Conclusion:

    KerasNLP provides a powerful and accessible toolkit for tackling a wide range of NLP tasks. Whether you’re a beginner or an experienced practitioner, KerasNLP empowers you to leverage the latest advancements in NLP and build cutting-edge applications.

  • KerasCV和KerasNLP:视觉和语言的增强

    在机器学习领域,Keras是最常用的工具之一,它提供了高层次的抽象来构建和训练机器学习模型。近年来,计算机视觉(CV)和自然语言处理(NLP)的发展给从业者带来了新的挑战。一方面,随着模型规模的不断增大,从头开始训练一个最先进的模型变得成本过高;另一方面,有效的数据预处理和度量计算也变得更加困难。为了解决这些问题,研究人员提出了KerasCV和KerasNLP这两个库,它们是Keras API在CV和NLP领域的扩展。

    KerasCV和KerasNLP的设计目标:

    KerasCV和KerasNLP旨在提供易于使用且性能优越的工具,支持在JAX、TensorFlow或PyTorch等深度学习框架上运行,以促进快速实验和模型开发。它们采用了模块化和分层的设计思想,为用户提供了不同层次的抽象和灵活性。

    KerasCV和KerasNLP的主要功能:

    • 基础组件:KerasCV和KerasNLP提供了构建和训练预处理流水线、模型和评估逻辑的可组合模块。这些组件可以在Keras Domain Packages生态系统之外使用,具有高度的灵活性。
    • 预训练骨干模型:这些库还提供了预训练的模型骨干,可以用于微调。在NLP模型中,还可以创建匹配的分词器。
    • 任务模型:KerasCV和KerasNLP提供了专门针对特定任务的端到端模型,如NLP中的文字生成和CV中的对象检测。这些任务模型结合了底层API中的预处理和建模模块,可以直接在原始输入上进行训练和推理。
    • 高效训练支持:库支持XLA编译,提高了训练效率。使用tf.data API运行所有预处理,通过编译的TensorFlow操作图来实现高效的数据处理。
    • 统一的分布式API:KerasCV和KerasNLP兼容Keras统一分布式API,支持模型和数据的并行处理,简化了模型的分布式训练配置。
    • 开源和社区贡献:这两个库完全开源(Apache 2.0许可),在GitHub上可供用户下载和使用,鼓励社区贡献和协作。

    KerasCV和KerasNLP的性能表现:

    论文中提供了KerasCV和KerasNLP在不同模型上的性能测试结果。例如,使用NVIDIA A100 GPU进行的实验显示,KerasCV和KerasNLP在模型训练和推理方面具有良好的性能。论文还与HuggingFace Transformers库进行了比较,突出了KerasNLP和KerasCV的设计哲学和方法的优势。

    未来的研究方向:

    论文中还提出了一些可以进一步探索的研究方向。例如,扩展多模态模型的提供,以支持更广泛的应用;优化与后端特定大型模型服务解决方案的集成,确保无缝部署和可扩展性。

    总之,KerasCV和KerasNLP为CV和NLP领域的研究人员和从业者提供了强大而易用的工具。它们的模块化和分层设计使得构建和训练模型变得更加简单和高效。通过提供预训练的模型骨干和任务模型,以及支持XLA编译和tf.data API的高效训练支持,KerasCV和KerasNLP为CV和NLP任务的快速实验和模型开发提供了便利。

    参考文献:

    KerasCV和KerasNLP的相关论文:

    更多关于KerasCV和KerasNLP的信息可以在官方网站和GitHub上找到。

    • Matthew Watson, Divyashree Shivakumar Sreepathihalli, François Chollet, Martin Görner, Kiranbir Sodhia, Ramesh Sampath, Tirth Patel, Haifeng Jin, Neel Kovelamudi, Gabriel Rasskin, Samaneh Saadat, Luke Wood, Chen Qian, Jonathan Bischof, Ian Stenbit. “KerasCV and KerasNLP: Vision and Language Power-Ups.” [PDF8].
    • François Chollet, et al. “Keras: The Python Deep Learning library.” Journal of Machine Learning Research 22.3 (2021): 1-7.
    • Thomas Wolf, et al. “Transformers: State-of-the-Art Natural Language Processing.” Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations. 2020.

    原始论文:

    • [PDF8] KerasCV and KerasNLP: Vision and Language Power-Ups
  • 现代男女关系的反思:从“妇女优先”到权责失衡

    在当今社会,男女平等是一个备受关注的话题。然而,随着社会的发展和观念的变化,男女平等的问题变得更加复杂和多面化。本文将探讨“妇女优先”现象对男女关系的影响,并反思其中存在的权责失衡问题。

    妇女优先:是习惯还是剥削?

    在我们的日常生活中,“妇女优先”似乎已经成为一种习惯。然而,这种习惯是否真的促进了男女平等?还是说,它反而加剧了性别之间的对立和剥削?

    从小学到大学,男女共同存在的场合中,部分女生表现出的优越感和对男性的工具化心理已经引起了一些人的不满。很多女性在享受“妇女优先”的同时,往往忽视了自己对社会和他人的责任。例如,在公共交通工具上,女性优先享有座位,但男性却承担了更多的体力劳动。这种不平衡的现象不仅没有促进男女平等,反而加深了性别之间的隔阂。

    女性的自我与利己主义

    许多女性在处理问题时,更倾向于感性和利己主义。她们往往根据自己的喜好来决定一切,而缺乏深思熟虑的公正思考。这种情况下,如果社会没有用道德标准来规范她们的行为,或用法律准绳来惩罚她们的错误,反而鼓励她们利用性别优势和规则优势攫取利益,那么这种现象必然会破坏社会的公平和男女之间的平等。

    举个例子,在职场中,一些女性可能利用性别优势获得了更多的晋升机会,而男性则可能因为这些“不公平”的竞争感到沮丧和不满。这种现象不仅影响了职场的和谐,也对整体的工作效率造成了负面影响。

    权力的转移与义务的缺失

    随着科技和社会规则的发展,男性的权力正在逐渐让渡给女性。然而,这种让渡并没有同步进行义务和责任的转移。结果,女性在享受更多权力的同时,却没有承担相应的责任和义务。这导致女性变得越来越娇贵,缺乏坚韧和质朴。

    例如,在家庭中,传统上由男性承担的经济责任现在逐渐由女性分担,但在家务劳动和育儿责任方面,男性的参与度并没有得到相应的减少。这种不对称的权力和责任分配,不仅影响了家庭的和谐,也对男女关系带来了新的挑战。

    男女关系的缩影:以“胖猫”事件为例

    “胖猫”事件是当前中国男女关系的一个缩影。这个事件让人们意识到,男女婚恋中存在许多不稳定因素,特别是男性在追求女性时常常被利用,演变成一种被称为“舔狗”的行为。

    这种现象揭示了男女关系中的深层次问题:男性在追求女性的过程中,付出远远多于回报,而女性则利用这种不平衡获取更多的利益。这种不对等的关系,不仅破坏了男女之间的平等,也对社会的和谐发展产生了负面影响。

    男女共同觉醒:走出死胡同

    随着社会的发展,不仅是女性在觉醒,男性也在跟着觉醒。当事情走入死胡同,更多男性的行为只会进一步印证许多问题的存在。越来越多的男性开始意识到保护自身权益的重要性,并从更加深入和公平的角度思考男女之间的相处之道。

    例如,越来越多的男性开始关注自身的心理健康和权益保护,积极参与到反对性别歧视的行动中来。这种觉醒不仅有助于改善男女关系,也为社会的和谐发展提供了新的动力。

    结语

    通过对当前男女关系中存在的问题进行反思和讨论,我们可以更好地理解如何在社会中实现真正的男女平等。在这个过程中,既需要女性认识到自身的责任和义务,也需要男性勇敢地维护自己的权益。只有这样,我们才能共同创造一个更加公平和谐的社会。


    参考文献:

    作者:叶子
    链接:[https://www.zhihu.com/question/655227844/answer/3518102336](https://www.zhihu.com/question/655227844/answer/351810233

  • EDU邮箱在国内滥用现象解析

    在中国,EDU邮箱(教育邮箱)通常是为在校大学生和教职员工提供的专用电子邮件服务。由于EDU邮箱可以享受大多数软件和硬件的学生优惠,因此成为了许多人追逐的对象。然而,这也导致了一些滥用现象的出现。本文将详细讨论EDU邮箱的使用与滥用情况,并探讨其背后的原因。

    EDU邮箱的主要用途

    EDU邮箱的主要用途在于获取各种教育优惠。这些优惠包括但不限于以下几个方面:

    1. 学生版软件优惠

    不少软件公司会为持有EDU邮箱的用户提供学生版软件的优惠或免费使用,例如:

    • Autodesk:提供AutoCAD、3ds Max、Maya等软件的免费教育版。
    • JetBrains:提供IntelliJ IDEA、PyCharm等开发工具的免费教育版。
    • Microsoft:通过Microsoft Imagine(现称Azure for Students)提供Azure服务和Visual Studio等软件的免费使用。

    2. 硬件购买优惠

    持有EDU邮箱的用户可以在购买硬件时享受教育优惠:

    • 苹果教育商店:提供MacBook、iPad等产品的教育优惠价格。
    • 微软教育商城:提供Surface设备和其他微软硬件的折扣。

    3. 云服务和开发者工具

    EDU邮箱还可以用于申请一些云服务和开发者工具的优惠或免费使用:

    • GitHub学生包:提供GitHub Pro、DigitalOcean、Namecheap等多项服务的优惠。
    • Google Drive:部分国外大学EDU邮箱可以享受Google Drive的无限容量。

    EDU邮箱的滥用现象

    尽管EDU邮箱的初衷是为教育工作者和学生提供便利和优惠,但在实际使用过程中,出现了一些滥用现象。

    1. 非学生身份使用

    一些非学生身份的人通过非法手段获取EDU邮箱,用于申请学生优惠。这种滥用行为不仅违反了相关服务的使用条款,还可能导致优惠政策的调整或取消。例如,有人通过淘宝购买EDU邮箱来获取软件或硬件的教育优惠。

    2. 账号买卖

    在一些交易平台上,EDU邮箱成为了一种商品,价格从几十元到几百元不等。这种买卖行为不仅破坏了教育优惠的公平性,还有可能导致账户信息泄露和安全问题。例如,某用户在知乎上提到,国内一些高校的EDU邮箱在淘宝上大量出售。

    3. 过度滥用导致封禁

    由于滥用现象的普遍存在,一些服务提供商开始严格审核EDU邮箱的使用资格,并采取封禁措施。例如,部分用户在申请JetBrains的学生认证时被拒,原因是他们的EDU邮箱被怀疑存在滥用行为。

    结语

    EDU邮箱为在校学生和教育工作者提供了许多便利和优惠,但滥用现象的存在破坏了这一初衷。作为用户,我们应当遵守相关规定,合理合法地使用EDU邮箱,享受其带来的优惠和便利。同时,相关机构和企业也应加强审核和管理,以维护教育优惠的公平性和有效性。

    参考文献

    1. EDU教育邮箱有这么多学生福利,你确定不搞一个?-CSDN博客
    2. edu邮箱官方购买渠道手把手选购指南记录_国内edu邮箱-CSDN博客
    3. EDU邮箱 – 知乎
  • 解密商业文档信息提取:让电子文档处理工具为我们效力

    在现实生活中,我们常常需要将商业文档中的信息转化为结构化的格式,以便后续的系统能够解析和使用。这个过程被称为商业文档信息提取(Business Document Information Extraction,简称BDIE)。BDIE主要包括两个任务:关键信息提取(Key-Information Extraction,简称KIE)和行项目识别(Line Items Recognition,简称LIR)。本文将介绍一种全新的方法,即”检索增强结构化生成”(Retrieval Augmented Structured Generation,简称RASG),用于解决BDIE问题,并在相关基准测试中取得了最先进的成果。

    什么是商业文档信息提取?

    商业文档信息提取是将非结构化信息(如原始文本、扫描文档等)转化为结构化格式的过程,使其可以被后续的系统解析和使用。其中,关键信息提取的目标是将文档中的信息提取出来,并按照键值对的形式进行格式化。而行项目识别的目标是将信息提取为一系列行项目,其中每个行项目对应表格中的一行,并以列键值对的形式进行格式化。与表格结构识别不同的是,行项目识别不关注列的顺序,只要能够正确地将列映射到预定义的列键即可。

    检索增强结构化生成

    检索增强结构化生成(RASG)是一种由四个组件组成的方法:检索增强生成(Retrieval Augmented Generation)、监督微调(Supervised Finetuning)、结构化生成(Structured Generation)和结构化提示(Structured Prompting)。这些技术可以提高机器学习模型使用工具的能力,从而改善BDIE任务的性能。

    RASG的四个组件是相互关联的:

    1. 检索增强生成允许我们通过在上下文中进行学习,教导预训练模型使用新的工具。
    2. 监督微调提高了提取结果的正确性。
    3. 结构化生成确保模型输出的结果可以被后续的系统解析。
    4. 结构化提示将布局信息融入到提示中,使得文本提示的形式更接近原始文档。

    这四个组件在使用开源的7B大型语言模型(LLM)Hermes 2 Pro – Mistral 7B上可以取得最先进的BDIE结果。然而,在使用GPT-3.5模型时,只需要其中的一个子集即可。

    监督微调中的注意事项

    监督微调的目标是使语言模型既能输出正确的内容,又能输出正确的结构。为了确保模型输出的结果可以被后续系统解析,我们需要将无效标记的概率置零。然而,简单地将监督微调和结构化生成相结合往往会导致结果不佳。主要存在以下两个问题:

    1. 模式与模型不匹配:基于正则表达式的结构化生成算法(如Outlines’ outlines.generate.json模块)在生成过程中隐式地要求严格的键排序。例如,假设我们的模式中”amount”键在”currency”键之前。在使用Outlines时,会在生成”amount”之前屏蔽”currency”的输出。然而,如果模型被微调为在生成”amount”之前生成”currency”,预测准确性就会下降。为了解决这个问题,可以确保监督微调的数据集严格遵循指定的模式,或者使用基于上下文无关文法的结构化生成算法(例如Outlines’ outlines.generate.cfg模块),它不要求严格的键排序。
    2. 可选键带来的标记膨胀:我们经常遇到一个问题,即在预测值为空时仍然要求生成键。例如,当我们使用可选字段构建一个Pydantic对象并将其JSON模式传递给Outlines时,会生成许多不必要的标记,从而降低推理速度。另一个不好的做法是将所有键都设置为可选的。这是因为Outlines在这种情况下使用了不同的生成状态机算法。解决这个问题的方法是在模式中添加一个类型为null的必需的虚拟键,并在后处理中将其删除。

    边界框反向计算的启发式算法

    对于关键信息提取任务,我们发现一个简单的贪婪算法(算法1)就足以用于边界框的反向计算。如果要使用整个页面,可以将下边界和上边界分别设置为0和页面的高度(以像素为单位)。对于行项目识别任务,一个好的启发式算法是:(1)将页面在垂直方向上划分为多个块,每个块对应一个行项目;(2)使用上述算法1为每个行项目的分配的单词块中的单词反向计算边界框。挑战在于如何划分页面。

    算法1:边界框反向计算的启发式算法

    1. 设置下边界和上边界、预测的键值映射和OCR数据。
    2. 匹配得分、键到边界框的映射。
    3. 对于键值映射中的每对(键,值):
    • 找到边界框中的所有坐标处于下边界和上边界之间的且与值匹配的最长连续单词列表。
    • 记录匹配单词的边界框。
    • 将键到边界框的映射添加到键边界框映射中。
    1. 计算匹配分数,即所有匹配单词的相似度之和,用于评估预测结果的准确性。
    2. 返回匹配分数和键边界框映射。

    这种方法的时间复杂度为O(MN^2 * Algo1),其中M是行项目的数量,N是页面的高度。我们可以通过降低页面的规模来优化这个复杂度。在实际生产中,我们使用N=128。此外,我们利用算法1的单调性进行优化:匹配分数随着上边界的增加和下边界的减小而不增加。因此,我们可以使用分治优化来加速计算,将复杂度优化为O(MNlogN * Algo1)。最后,我们使用二分搜索来找到第一个行项目的最大下边界和最后一个行项目的最小上边界,以缩小边界范围。

    通用行项目识别度量

    行项目识别的目标是将信息提取为有序的行项目列表,其中每个行项目对应表格中的一行,并以列键值对的形式进行格式化。为了评估行项目识别的性能,我们需要一个具备以下属性的度量方法:

    1. 子任务隔离:需要分别评估子任务的性能。
    2. 单元格隔离:将一个真正的正样本对应一个预测的单元格和一个正确的真实单元格进行比较。
    3. 单元格完整性:虚构的单元格被视为假阳性,缺失的单元格被视为假阴性。
    4. 单元格相似度度量的灵活性:在同一个子任务中,度量方法应支持多种单元格相似度度量方式。
    5. 单元格行位置的不变性:对于正确预测的单元格,所给予的奖励应与其绝对行位置无关。
    6. 行顺序的保持:对于任意两个预测行,它们的相对顺序和与其匹配的真实行的相对顺序应保持一致。
    7. 列排列的不变性:度量方法应对列的重新排列具有不变性。即不考虑列的顺序。

    目前存在的行项目识别度量方法中,ANLS*和DocILE使用基于最大权重二分图匹配的算法进行行匹配,因此不满足属性#6。此外,DocILE支持单元格内容和单元格位置的识别,但无法隔离这两个方面,这使得它无法用于只进行单元格内容或单元格位置识别的任务。GriTS满足上述所有属性,但不满足属性#7。

    在接下来的部分,我们将介绍一种新的度量方法,称为通用行项目识别度量(General Line Items Recognition Metric,简称GLIRM),它满足上述所有属性。GLIRM可以看作是ANLS*和DocILE的扩展,使其满足属性#1和属性#6,同时也是GriTS的一种推广,使其满足属性#7。

    GLIRM中的相似度匹配分数

    根据属性#1和属性#4,我们将使用𝑓(𝑐ₚ, 𝑐ₜ)表示预测单元格𝑐ₚ和真实单元格𝑐ₜ之间的相似度度量。𝑓可以是适用于特定下游任务的任何相似度度量方式,如产品参考编号的精确匹配、边界框的交并比等。为了使度量方法类似于F1得分,我们需要将𝑓限制在0到1之间:0 ≤ 𝑓(𝑐ₚ, 𝑐ₜ) ≤ 1,对于所有𝑐ₚ, 𝑐ₜ。我们将使用𝑔𝑓(𝑟ₚ, 𝑟ₜ)表示预测行𝑟ₚ和真实行𝑟ₜ中对应单元格的相似度分数之和。

    行匹配

    我们将𝑅ₚ和𝑅ₜ分别表示预测的行序列和真实的行序列。我们的目标是找到等长的子序列𝑅~ₚ和𝑅~ₜ,使得对应单元格的相似度分数之和最大:
    𝑅~ₚ, 𝑅~ₜ = argmax 𝑅ₚ’ | 𝑅ₚ, 𝑅ₜ’ | 𝑅ₜ ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) (1)
    由于我们关注子序列而不是行的子集,因此更适合使用类似Levenshtein距离的算法来找到𝑅~ₚ和𝑅~ₜ,而不是像ANLS*和DocILE那样使用基于最大权重二分图匹配的算法。这样可以惩罚在预测中交换或重新排列的行。

    GLIRM的准确率(GLIRM-Prec)和召回率(GLIRM-Rec)可以定义如下:
    GLIRM-Prec(𝑅ₚ, 𝑅ₜ) = (1/|𝑅ₜ|) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) (2)
    GLIRM-Rec(𝑅ₚ, 𝑅ₜ) = (1/|𝑅ₚ|) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) (3)
    GLIRM-F1(𝑅ₚ, 𝑅ₜ)可以定义为:
    GLIRM-F1(𝑅ₚ, 𝑅ₜ) = (1+𝛽²) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) / (𝛽²|𝑅ₚ| + |𝑅ₜ|) (4)
    在实际应用中,或者当人工审核系统的输出时,召回率通常比准确率更重要。这是因为查找并确定缺失单元格比验证提取单元格的正确性需要更多时间。因此,我们可以定义带有𝛽参数的GLIRM-F1指标:
    GLIRM-F1𝛽(𝑅ₚ, 𝑅ₜ) = (1+𝛽²) ∑ 𝑖 𝑔𝑓(𝑅~ₚ[𝑖], 𝑅~ₜ[𝑖]) / (𝛽²|𝑅ₚ| + |𝑅ₜ|) (5)
    其中𝛽是一个控制召回率重要性的超参数。当𝛽=1时,该指标与GLIRM-F1相同。

    实验结果

    我们使用DocILE数据集进行了实验。表格I比较了LLMs与RASG在KIE和LIR任务上的性能与强大的多模态基线(如LayoutLMv3和Roberta + DETR)。表格II显示了RASG各组件在不同基线模型上的贡献。

    在KIE任务上,只需要GPT-3.5 + 1-Shot Retrieval或Hermes 2 Pro + RASG即可超越基线。对于LIR任务,GPT-3.5 + 1-Shot Retrieval + Structured Prompting就足以击败基线模型。

    此外,我们还测量了边界框反向计算启发式算法的中位数表格级信息覆盖得分(Information Coverage Score,简称ICS)。最佳基线模型Roberta + finetuned DETR在ICS上达到92.93%,而GPT-3.5 + RASG和Hermes 2 Pro + RASG分别达到87.79%和85.02%。

    讨论与结论

    我们的模型性能和消融实验结果表明了几个结论。首先,在KIE任务中,与其进行提示工程相比,使用检索机制和/或在目标数据集上进行微调的效果更好。对于LIR任务,首先进行结构化提示,然后再进行微调是一个更好的策略。有趣的是,经过适当调整和增强的LLMs可以击败经过微调的多模态模型,如LayoutLMv3和Roberta + DETR。最后,我们提出的边界框反向计算启发式算法在表格检测任务上的性能仅略逊于最佳基线模型。

    对于在商业文档信息提取领域工作的团队,我们建议首先使用支持结构化生成的现成LLMs模型,然后实现检索机制。如果性能仍然不理想,可以考虑进行监督微调。对于LIR任务,我们建议先从结构化提示开始,然后再进行微调。

    综上所述,本文介绍了使用RASG框架解决BDIE问题的全面方法,并提供了关于LLMs在这一领域中性能和优化策略的见解。

    参考文献:

    • Franz Louis Cesista, Rui Aguiar, Jason Kim, Paolo Acilo. Retrieval Augmented Structured Generation: Business Document Information Extraction As Tool Use.
    • Skalický, Jakub, et al. “Business document information extraction.” arXiv preprint arXiv:2202.06070 (2022).
    • Smock, Matthew, et al. “GriTS: A Generalized Table Structure Recognition Metric.” arXiv preprint arXiv:2304.01428 (2023).
    • Willard, Willard. “Outlines: A toolkit for building structured generation models.” arXiv preprint arXiv:2303.01632 (2023).
    • Xiao, Tong, et al. “Information Coverage Score: Measuring Table Structure Extraction Quality.” arXiv preprint arXiv:2311.00007 (2023).
    • Simsa, Jiří, et al. “DocILE: A Large-scale Research Benchmark for Document Key Information Extraction and Line Item Recognition.” arXiv preprint arXiv:2312.00212 (2023).
    • Huang, Xingyi, et al. “LayoutLMv3: Multi-modal Pre-training for Visually Rich Document Understanding.” arXiv preprint arXiv:2203.06470 (2022).
    • Liu, Yinhan, et al. “Roberta: A robustly optimized BERT pretraining approach.” arXiv preprint arXiv:1907.11692 (2019).
    • Carion, Nicolas, et al. “End-to-end object detection with transformers.” arXiv preprint arXiv:2005.12872 (2020).
  • 新的位置编码CoPE

    新的位置编码方法 CoPE(Contextual Position Encoding)确实在提升大模型性能方面展示了显著的潜力。传统的 Transformer 模型使用绝对或相对位置编码,通常基于 token 的位置来进行编码,这在处理更高层次的抽象任务(例如计算第 i 个句子或特定单词)时存在局限性。而 CoPE 通过允许模型根据上下文来选择性地编码位置,解决了这一问题。

    CoPE 的优点

    1. 上下文依赖的位置编码:CoPE 通过计算每个 query-key 对的门控值(gate value)来决定哪些 token 应该被计入位置测量。这使得位置测量不再是简单的 token 计数,而是根据内容和上下文动态调整。
    2. 多层次位置抽象:CoPE 能够同时表示从 token 位置到句子位置等不同层次的抽象位置。这样,模型不仅能关注到前几个 token,还能关注到前几个句子,从而更好地理解当前句子的含义。
    3. 跨任务的优越性能:文章通过多个实验展示了 CoPE 在处理选择性复制、计数任务以及语言和编码任务中的优越性,特别是在处理分布外数据和需要高泛化能力的任务上表现出更强的性能。

    实验结果

    实验结果表明,CoPE 在以下几个方面优于传统的位置编码方法:

    • 选择性复制和计数任务:CoPE 能够解决标准位置编码方法无法解决的选择性复制和计数任务。
    • 语言建模和编码任务:在这些实际应用中,CoPE 降低了困惑度(perplexity),提高了模型性能。
    • 分布外数据的泛化能力:CoPE 在处理分布外数据时表现出更强的泛化能力,这是传统位置编码方法难以实现的。

    结论

    总的来说,CoPE 提供了一种更灵活、更强大的位置编码方法,适用于需要对输入数据结构和语义内容进行精细理解的任务。通过上下文依赖的位置编码,CoPE 能够显著提升大模型在多种任务上的性能,特别是在需要高泛化能力的场景中。

    论文链接:Encoding: Learning to Count What’s Important

人生梦想 - 关注前沿的计算机技术 acejoy.com